SlideShare uma empresa Scribd logo
1 de 43
Baixar para ler offline
Windows で MySQL入門


    担当: @h141gm
    対象者:MySQL に興味、関心のある人
    レベル:初級者向け
自己紹介
   石井と申します。( twitterID: @h141gm )
   いわゆる”SIer”な仕事をしています。
   業務でMySQLがらみの案件は今年まだ2本
   仕事はPostgreSQLとOracleばかり
   いかんMySQL分が不足してきた…

   今回の資料は、slideshareにアップ予定です
   アップできたらhttp://h141.github.com/ にリンクします
   パワポの作り方が下手なので全面的に白いです
プロローグ(前説)
最初に、お詫びとお断り
今回はWindowsとMySQLの話ですが
 「最新のWindows Server 2012を使って
     MySQL Enterprise Editionを本格運用するぜー」

とか

 「libmysqld.dll(←mysql”d”の方)を使って
     MySQLサーバ組み込みWindowsアプリを作るぜー」

とかそういった派手な内容ではありません

  「手元にあるのはWindows XP時代のプアなマシンだけど、
     MySQLのテスト環境だけは欲しいなあ…」

という貧乏なお話です。
前説(2)
 OSS系の勉強会にくるとMBA(Mac Book Air)ばっかりですが
 会社で個人用に配布されるPCって、100%、Windowsですよね

 しかもDellの型落ちのWindowsXPマシンだったりしますよね

 VMwareやOracleVMを入れてLinuxを動かしたくても
 VT-dもVT-xすら付いてないので重くてしょうがなかったりしますよね

 Eclipseが重過ぎるので、自然とnetbeans派になりますよね


 メモリが2GBで、CPUがCerelonでHDDは250GBですよね(断言)

  決して、具体的にどこかの会社ディスってるとか、
  そういう話ではないですよ♪
前説(3)
 今日の目標(テーマ)は、


 「こういう腐ったWindowsマシンが配られた不幸な新人のPCに
 MySQLを入れさせて、MySQLerに洗脳してしまおう」


  です。

 初心者ではない方も、
  「自分が新人教育係ならこう説明するな」
  「あそこ、間違ってるwwwwwww」
 とかそういう目線で、お楽しみください
 愛のあるツッコミ、“随時“募集中です。
テスト環境
 ・Windows XP SP3 (32bit) 日本語版
    (最新のパッチまでアップデート)
 ・MS Security Essentials
 ・MySQL 5.5.28 CommunityServer版


 上記をOracleVM VirtualBox上の仮想環境で構築しました
 リソースは、CPUコア1個、メモリ500MB です
アジェンダ
  WindowsでMySQLを動かす
        パッケージの入手
        ファイルの展開
        ファイル構成
        サーバ起動(テスト起動)
        接続確認
        サーバ停止
        設定変更
        サーバ起動
        複数サーバの同時起動            ここは時間があれば説明する
        MySQL入門後

    できた環境で色々な状況を試す
        1. WARMバックアップとリカバリ
        2. レプリケーション
        3.BLACKHOLEレプリケーション
◆WindowsでMySQLを動かす
     パッケージの入手
     ファイルの展開
     ファイル構成
     サーバ起動(テスト起動)
     接続確認
     サーバ停止
     設定変更
     サーバ起動
     複数サーバの同時起動
     MySQL入門後
パッケージの入手
 MySQL Community Serverのダウンロードページへアクセス
 公式: http://www.mysql.com/downloads/mysql/
 開発: http://dev.mysql.com/downloads/mysql/
・パッケージの選択
開発サイトで、MySQLServer5.5(x86,32bit)のパッケージは選択肢が4つある
・どれかを選んで”download”ボタンをクリックするとユーザー登録画面になるが、
下のほうのリンク ”No thanks, just take me to the downloads!”をクリックする
ことで、登録しないで、ダウンロードすることができる




・ファイルをPCに保存する
・MySQL Installer for Windows
   mysql-installer-community-5.5.28.2.msi 207.0M
   2011年9月に追加され(5.5.15~) 、2012年8月頃に改良された
    Serverの他WorkBenchなども一括でインストールできる統合インストーラ




・ MySQL Server msi (インストーラ)
    mysql-5.5.28-win32.msi                31.1M
    “Server”のGUIインストーラ



 ・ MySQL Server zip (アーカイブ)
     mysql-5.5.28-win32.zip 143.3M
      バイナリ等とデータディレクトリを固めたアーカイブファイル



  ・ソースファイル
     mysql-5.5.28.zip                       28.2M
       ソースファイル。コンパイルが必要
【疑問】    色々なパッケージが有るけど、結局どれが良いの?

【回答】    簡単なテストとかMySQLを触ってみたいという人には、
         “zipアーカイブ” 、超オススメ
【理由】
       ・インストールは、展開してディレクトリ置くだけなので、超簡単
                  データディレクトリが作成済み
                  mysql_install_dbでの初期化不要
       ・レジストリを汚さない
       ・サービスを作らない
       ・起動停止も簡単

       ・複数サーバの起動もできる
       ・アンインストールも、サーバを停止して、ディレクトリを消すだけで簡単

       ・ソースからのコンパイルは多言語処理のソースと日本語Windows
       の間で問題が発生するので避けたい
ファイル展開(1)
                                 (この資料で“$”は、コマンドプロンプトの
・MySQL用ディレクトリとして、C:¥MySQLを作る。    プロンプトとして使用します)

 $ md C:¥ MySQL

  【注意①】 基本的にどこにおいても大丈夫だが、
  後のことを考えて、日本語やスペースは使わない方がよい
  【注意②】5.1以前は、インストール場所が強制されていたので、
  一部の古いアプリでは、 C:¥mysqlにインストールされる前提で動く可能性がある

・ダウンロードしたmysql-5.5.28-win32.zipをダブルクリックして展開する
・mysql-5.5.28-win32ディレクトリをC:¥ MySQLの下にコピーする




インストールはこれだけで完了です!
ファイル展開(2)
・【重要】ファイルを展開したら最初にやるべきこと
 サーバの起動前にデータディレクトリdataを別の場所にコピー保存する
データディレクトリとはC:¥MySQL¥mysql-5.5.28-win32¥data のディレクトリのこと


【理由】 データディレクトリを作成するのに使われる“scripts/mysql_install_db.pl” は、
       perlスクリプトなので、Windowsにperlを導入しないと初期化が面倒。
       なので、あらかじめ、初期化済みのdataディレクトリを保存しておく。


    これでいつでも、データは初期化できます。
    安心してDBをいじり倒しましょう

    ・DBのデータが壊れたかもと思ったら、上記のコピーを用いて
    以下の手順で、最初の状態に復旧できる
      ①サーバを停止(後述)
      ②C:¥MySQL¥mysql-5.5.28-win32¥data ディレクトリを削除
      ③保存しておいたdata ディレクトリを
       C:¥MySQL¥mysql-5.5.28-win32¥の下にコピーする
ファイル構成
展開後のディレクトリ構成はこうなっている
 $ dir C:¥MySQL¥mysql-5.5.28-win32¥
   bin/                  …実行ファイル
   data/                 … (初期化済み)データディレクトリ
   docs/                  …ドキュメント
   include/               …Cのヘッダファイル
   lib/                   …Cのライブラリファイル(dllファイル)
   mysql-test/            …MySQLテストスイート(Perlスクリプト)
   scripts/               …データディレクトリ初期化スクリプト(Perlスクリプト)
   share/                …色々な言語ファイル と 初期化用SQLファイル
   sql-bench/             …ベンチマーク(Perlスクリプト)

  README                   …配布物についての簡単な説明
  COPYING                  …GPL v2 ファイル

  my-small.ini             …設定ファイルサンプル(メモリ64M以下)
  my-medium.ini            …設定ファイルサンプル(メモリ128Mくらい)
  my-large.ini             …設定ファイルサンプル(メモリ512Mくらい)
  my-huge.ini              …設定ファイルサンプル(メモリ1~2Gくらい)
  my-innodb-heavy-4G.ini   …設定ファイルサンプル(メモリ4Gくらい)

このディレクトリはインストールディレクトリと呼ばれる
・実行ファイルの簡単な解説
    重要度に応じて、ミシュランガイド風に★付き (個人的な感想です)
【exeファイル】
  ・bin/ディレクトリ
   mysqld.exe                   … 【★★★】MySQLサーバ
   mysql.exe                    … 【★★★】MySQLクライアントツール
   mysqladmin.exe               … 【★★★】MySQL管理ツール
   mysqldump.exe                … 【★★★】バックアップ用にデータをSQLで出力
   mysqlslap.exe               …【★★】クライアントの負荷エミュレーション
   mysql_upgrade.exe           …【★★】 MySQLのデータをアップグレードするツール
   mysqlbinlog.exe             …【★★】バイナリログの内容を出力する
   mysqlimport.exe         … 【★】テキストファイルからのデータインポート
   perror.exe              …【★】エラーコードの説明を表示
   my_print_defaults.exe   …【★】設定ファイルから指定された[グループ]の設定を抜き出す

   mysqlcheck.exe              …【☆】テーブルの検査、分析、修復(MyISAM用)、最適化
   myisamchk.exe               …【☆】テーブルの検査、分析、修復(MyISAM用) 、最適化

    mysqlshow.exe              … データベース、テーブル、カラムの情報表示
     mysql_tzinfo_to_sql.exe     …タイムゾーンテーブルのロード
     mysql_plugin.exe            …どのMySQLプラグインをロードするか管理するツール
【exeファイル】続き
  ・bin/ディレクトリ続き

     mysqld-debuug.exe       … デバッグメッセージ付きMySQLサーバ

     mysqltest.exe            …MySQLのテストスイート言語
                               (リグレッションテストに使われる)
     mysql_client_test.exe    …クライアントAPIのテストする

     myisam_ftdump.exe      … MyISAMの全文検索の情報表示
     myisampack.exe         … MyISAMテーブルを圧縮、読み取り専用にする
     myisamlog.exe          … MyISAMの動作ログを表示する
                (設定log-isamで出力されるMyISAMのデバッグ用バイナリファイルの解析)



     echo.exe                 …普通のechoコマンド?
     replace.exe              …sedっぽいコマンド?
     resolveip.exe            …nslookupっぽいコマンド?



    mysql_embedded.exe       …多分、組み込み用クライアント?
    mysqltest_embedded.exe   …多分、組み込み用テストスイート?
【Perlスクリプト】
・bin/ディレクトリ
    mysql_secure_installation.pl …【★★】初期データベースをセキュアにする
                 (testスキーマ削除、匿名ユーザアクセス権限削除、rootのパスワード設定など)

     mysqldumpslow.pl          …【★】スロークエリのレポート出力
                                 (設定log-slow-queriesで出力されるログファイル)
     mysqlhotcopy.pl           …【★】MyISAMのホットバックアップ


    mysqld_multi.pl               …複数のMySQLサーバの起動停止
    mysql_convert_table_format.pl …指定されたDBの全テーブルのストレージエンジンを変更
                                  (内部で”ALTER TABLE ENGINE=“を繰り返しているだけ)
    mysql_config.pl                …コンパイルオプションの表示

・mysql-test/ ディレクトリ
     mysql-test-run.pl       …リグレッションテストをする
     mysql-stress-test.pl    …ストレステスト?

・scripts/ディレクトリ
      mysql_install_db.pl   …【★★★】初期データベースを作成する

     mysqld.exeを—bootstrapモードで起動させ、次に示すSQL文を実行させることで、初期データベースを作成する
【SQLファイル】

 ・share/ ディレクトリ

   mysql_system_tables.sql          …【★】システムデータベースのテーブルを作成する
   mysql_system_tables_data.sql     …【★】システムデータベースにデータをセットする

             mysql_system_tables_data.sqlで、
             初期のtestスキーマの作成やrootユーザー匿名ユーザーが作成される

   fill_help_tables.sql             …【☆】システムデータベースのhelp用テーブルに文をセット

     mysql_test_data_timezone.sql    …システムデータベースのタイムゾーンのテーブル
                                      にデータをセット(使用せず?)




           (include/ や mysql-test/ にあるSQLファイルやexeファイルは省略しています)
サーバ起動 (テスト起動)
①コマンドプロンプト(cmd.exe)を起動させる
②サーバファイルmysqldを起動させる
$ C:¥MySQL¥mysql-5.5.28-win32¥bin¥mysqld.exe --console

    初回実行時は、ファイアウォールのダイアログが出るので、
     “ブロックを解除する”ボタンをクリックする




  ・ 環境変数PATHにmysqldへのパスは追加されていないのでmysqld.exeはフルパスで指定する。

 ・この時点で設定ファイルは存在しないがMySQLサーバはデフォルトの設定だけで起動可能
  (オプションがいらなければmysqld.exeをダブルクリックするだけでも起動可能)
・オプション--consoleが、重要
エラーログへの出力をコンソール画面に表示し、Ctrl+Cでサーバを停止できるようになる
 $ C:¥ MySQL¥ mysql-5.5.28-win32¥bin¥mysqld.exe --console
 121017 0:07:14 [Note] Plugin 'FEDERATED' is disabled.
 121017 0:07:14 InnoDB: The InnoDB memory heap is disabled
 121017 0:07:14 InnoDB: Mutexes and rw_locks use Windows interlocked functions
 121017 0:07:14 InnoDB: Compressed tables use zlib 1.2.3
 121017 0:07:14 InnoDB: Initializing buffer pool, size = 128.0M
 121017 0:07:14 InnoDB: Completed initialization of buffer pool
 121017 0:07:14 InnoDB: highest supported file format is Barracuda.
 121017 0:07:14 InnoDB: Waiting for the background threads to start              ここ重要
 121017 0:07:15 InnoDB: 1.1.8 started; log sequence number 1595675
 121017 0:07:15 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306
 121017 0:07:15 [Note] - '0.0.0.0' resolves to '0.0.0.0';
 121017 0:07:15 [Note] Server socket created on IP: '0.0.0.0'.
 121017 0:07:15 [Note] Event Scheduler: Loaded 0 events
 121017 0:07:15 [Note] C:¥MySQL¥mysql-5.5.28-win32¥bin¥mysqld.exe: ready for connections.


コマンドプロンプト上で--consoleオプションを付けてmysqld.exeを実行させると、
上記のような起動ログを出して待ち状態になる。
このウインドウを[×]で閉じてはいけない
画面操作の邪魔な時は、ウインドウを最小化しておくとよい。
接続確認(1)
①接続確認のために、もう一つコマンドプロンプトを起動させる
    (コマンドプロンプトの“プロパティ”から”画面の色”で”画面の背景”を変えると
     サーバとクライアントの区別が付きやすいので便利)
②対話型のクライアントプログラム(mysql.exe)を起動する
 $ C:¥MySQL¥mysql-5.5.28-win32¥bin¥mysql.exe -uroot
 Welcome to the MySQL monitor. Commands end with ; or ¥g.
 Your MySQL connection id is 1
 Server version: 5.5.28 MySQL Community Server (GPL)


 Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.


 Oracle is a registered trademark of Oracle Corporation and/or its
 affiliates. Other names may be trademarks of their respective owners.
 Type 'help;' or '¥h' for help. Type '¥c' to clear the current input statement.


 mysql>
接続確認(2)
 $ C:¥ MySQL¥ mysql-5.5.28-win32¥bin¥mysql.exe –uroot test
 ・ クライアントのmysql.exeもフルパスで指定する。
 ・ -uオプションは、接続するユーザーの指定
      ここでは、初期化時に自動的に作成される管理用のrootユーザーで接続している
      オプションとそのパラメータの間は離さないで書くほうがよい
        ○ -uroot    △ -u root (参考:○ -ppass ×-p pass )

 ・オプション-Pでポート番号を指定していない場合、
   デフォルトのポート番号として3306が使用される

・(余談)Windowsは、UNIXと接続がちょっと違う
  いわゆる”UNIXドメインソケット”を利用したプロセス間通信はできない
           つまり設定ファイルでのsocketの指定は意味がない

   代わりにWindowsにしかない接続として、以下の2つがある
            ・”名前付きパイプ” …設定項目enable_named_pipe
            ・”共有メモリ” … 設定項目 shared-memory, shared-memory-base-name

   (ただしデフォルトではどちらも無効になっているため
   必ずTCP/IPで接続される)
接続確認(3)
 (余談続き)そのほかのWindows版とUNIX版の違い
 ・MySQLスキーマ名、テーブル名はファイルシステムに依存するため
   Windows(NTFS)では大文字小文字の区別はしない
  (ただし、オプションやパスワードはどのOSでも、大文字小文字を区別する)
  (パスワードの大文字小文字を区別しないOracle(11g以前)とはこの点が異なる)
     ・Windowsでも、lower_case_table_names=2と設定すると、大文字小文字
     を保持した名前で ディレクトリやファイルを作成するが、アクセス時の名前の
     チェックでは 大文字小文字を区別しない。 (WindowsでC:¥HOGEディレクト
     リが存在する状態で、C:¥hogeディレクトリを作ろうとしても "指定されたファイ
     ル名が既に存在します"エラーになるのと同じ現象)
      ・UNIXのデフォルトと同じ値のlower_case_table_names=0と設定しても大
      文字小文字が区別されるが、 大文字小文字を変えたテーブル名でMyISAM
      のテーブルにアクセスした場合、 インデックスデータが破壊される可能性が
      あるので、この設定をするのは止めた方が良い

      ・設定項目名は、”lower_case_table_names”と「テーブル」となっているが、
      スキーマ名へも影響を与える

 ・ファイルパスの区切り文字が「¥」なので、エスケープ文字と重複する
 そのため、ファイルパスは「¥¥」または「/」を使用する必要がある
接続確認(4)
③サーバとの接続を切断

 mysql> ¥q

または
 mysql> quit

 または
 mysql> exit

で切断する。
どれを使っても結果は同じ。
 (Ctrl+Cでmysql.exeを終了させることでも切断可能)


 クライアントで切断をしても、サーバの動作へは影響ありません
サーバ停止(1)
   mysqld.exeが起動しているコマンドプロンプト上で、
   Ctrl+Cを押すと、MySQLサーバが停止する
      (mysqld.exe起動時に--consoleオプションを有効にしたため)


【注意】 コマンドプロンプトの[×]ボタンをクリックしてもサーバは停止しない
     mysld.exeプロセスは残ったままになる
       このような場合や、--consoleオプションを付けずにmysqld.exeを起動させた場合
       タスクマネージャの”プロセス”からmysqld.exeのプロセスを停止させないほうが良い。

      下記の【正式なシャットダウン方法】に従ってサーバを停止させる

【正式なシャットダウン方法】
  ①別のコマンドプロンプトを起動させます
  ②mysqladmin.exeで、シャットダウンコマンドを実行します
   $ C:¥ MySQL¥ mysql-5.5.28-win32¥bin¥mysqladmin.exe -uroot shutdown

    -u ... サーバへ接続するユーザの指定
    サーバの停止には、root権限が必要
サーバ停止(2)
MySQLのmysqladmin.exeコマンドでのshutdownには、
OracleやPostgreSQLのようなshutdownモードの指定はない
   参考:他RDBMSのshutdownモード
   Oracle:     NORMAL / TRANSACTIONAL / IMMEDIATE / ABORT
   PostgreSQL: smart / (transactionalは無し) / fast / immediate

   ちなみに、PostgreSQLの “pg_ctl”コマンドでの“shutdown”もモードを省略できるが、
   これはデフォルトの”-m s” (smartモード)が選択されるのと同じ
MySQLのshutdownは、以下のような流れでサーバ停止する
  ・1.シャットダウンプロセスの開始
           (mysqladminを使用してshutodownを指示する方法以外に、
            UNIXの場合はSIGTERM割り込み(要するにkillコマンド)で、
            Windowsのサービスで起動させた場合はサーバマネージャで、
           シャットダウンプロセスを開始できる)
   ・2.(必要なら)シャットダウンスレッドの作成
   ・3.新規接続の拒否
   ・4.現行の動作中のスレッドを順次停止していく
   ・5.ストレージエンジンのシャットダウン
              (詳細後述)
   ・6.サーバの停止
サーバ停止(3)
 mysqladmin shutdownにモードの指定は無いのだが、

「・5ストレージエンジンのシャットダウン」の中の「innodbのシャットダウン」は、
シャットダウンのモードを選択できる

innodbのシャットダウンは、 innodb_ fast_shutdownの設定で変化する
  0...(安全、低速)ログの内容を完全にテーブルファイルへフラッシュする。
  1...(デフォルト)終了前にチェックポイント処理を行う(fast shutdown)
  2...(危険、高速)ログの内容をファイルへ反映するだけ、再起動後にはクラッシュリカバリが行われる


 innodb_ fast_shutdownは、Globalな動的システム変数なため、
 mysql.exeで接続して変更することができるので、
 動的にシャットダウンのモードを変更できる

 innodb_ fast_shutdownに1(デフォルト)が設定されている場合の挙動は、
 だいたい、
 Oracle”SHUTDOWN IMMEDIATE”や
 PostgreSQL”shutdown fast”と同じである
設定の変更(1)
Windowsで設定ファイル(オプションファイル)名は、
”my.ini”が使われることが多い

 (UNIX系で使用されるmy.cnfは、Windowsで.cnfが短縮ダイヤル用の拡張子なので
 エクスプローラのフォルダオプションを変更しないと使用できないため)

設定ファイルは以下の場所に設置できる

  ①C:¥WINDOWS¥my.iniまたはmy.cnf
   (環境変数%WINDIR%の直下)
  ②C:¥my.ini または C:¥my.cnf
  ③(ベースディレクトリ)¥my.iniまたはmy.cnf
  ④--defaults-extra-file=(パス)で指定されたファイル


 設定項目ごとに、後から読んだファイルの値で上書きされる

  ただし、mysqld.exeのコマンドラインで--defaults-file=(パス)で
  設定ファイルを指定すると、
  サーバは上記の標準で読み込まれる設定ファイルをすべて無視し、
  指定された設定ファイルからのみ、オプションを読み取る
設定変更(2)
・設定変更の反映
  ①MySQLサーバを停止
  ②設定ファイルを書き換えて保存する
  ③MySQLサーバの起動
  【重要】
  前にインストーラで入れた残骸のC:¥WINDOWS¥my.ini やC:¥my.iniが残ったままだと、
  ” (ベースディレクトリ)¥my.ini”で設定して無い設定項目が設定される

  【重要】
  設定ファイルmy.ini は、”ファイルを保存”しないと、反映されない。


・設定された状態の確認
   mysql.exeクライアントでMySQLサーバに接続し、
   サーバ変数を表示させて、状況を確認する
  $ C:¥MySQL¥mysql-5.5.28-win32¥bin¥mysql.exe -uroot
  MySQL> show variables;
設定変更(3)
 推奨設定

  C:¥MySQL¥mysql-5.5.28-win32¥my.ini
  [mysqld]
  console = 1

  character_set_server = utf8
  collation_server = utf8_general_ci

  transaction_isolation = READ-COMMITTED
  innodb_file_per_table
  innodb_buffer_pool_size = 256M
  innodb_log_buffer_size = 8M
  # innodb_log_file_size = 64M

  [mysql]
  default_character_set = cp932


  注意:これは最低限の設定です
  “transaction_isolation = READ-COMMITTED“は、
  オラクルデータベース出身者がネクストキーロックやギャップキーロックを嫌うので、緩くする設定

  クライアント側のcp932は、Windows XPの標準の文字セットいわゆるShiftJISです
設定変更(4)
MySQLパッケージに付属しているmy-*.iniファイルは古く、時代にあっていない

最適な設定ファイルを生成するための情報を示す
ただし公開されている情報は、圧倒的にlinux向けが多い点に注意

・公開されているmy.cnf
    ①@nippondanjiさんのmysqlのwiki上に公開されているもの

   http://mysqlpracticewiki.com/index.php/My.cnf%E3%82%B5%E3%83%B3%E
   3%83%97%E3%83%AB

   wikiのトップ http://mysqlpracticewiki.com/
   から、“My.cnfサンプル”で検索してもたどり着ける

   ②10月5日に、NHN Japan(旧ライブドア)の長野( @kazeburo )さんが、
   githubにmy.cnfを公開しています
   http://blog.nomadscafe.jp/2012/10/mysql-mycnf-github.html


   ③「WordPress 高速化&スマート運用必携ガイド」を書いた岡本渉さんが、
   Amazon EC2のmicroインスタンス上でのWordpressに特化した
   チューニング済みのAMIを公開しています
   http://dogmap.jp/2012/07/17/wordpress-ami-amimoto/
   (ただし、perconaサーバ用だったり、特殊な環境専用だったりします)
設定変更(5)
・web上で動的にmy.cnfを生成するサイト
  ①“Percona Online Tools”の“Optimize your MySQL Server”

    ウイザード形式で、対話的にサーバの情報を指定していくことで
    my.cnfが生成される

       https://tools.percona.com/
       (ユーザー登録が必要です)
・MySQLサーバ上で動的にmy.cnfを生成する
  ①“mysqltuner.pl”
      https://github.com/rackerhacker/MySQLTuner-perl

    サーバ内のメモリなどを検出して最適値をアドバイスするツール
     perlスクリプトです。
     搭載メモリ量の自動読み取り機能などが、Windowsに対応していません
     (また、設定内容が少し古いかも知れません)

 ・最終的には、MySQLアーキテクチャを勉強して、ベンチを取りながら
 設定を詰める必要がある
設定変更(6)
(余談) MySQLの設定ファイルで、はまりやすいポイントを列挙します。

 ①設定項目の単語の区切りの-(ハイフン)と_(アンダースコア)は、等価
   log-bin もlog_binも同じことです
  ②設定項目は単一の名称だと区別ができるところまで書けば省略できる

   read-onlyは、read-oでも通ってしまう

   (ただし、linuxのrpmでインストールする場合に、標準で添付されるSystemV
   起動スクリプト(/etc/init.d/mysql)中には、sedを使用するため、上記の表記の揺れを
   許さないところが存在するので注意)


  ③設定項目名は、大文字小文字を区別する
サーバ起動
①サーバファイルmysqld.exeをダブルクリックして起動させる


  ・インストールディレクトリにmy.iniファイルを作成すれば、
  mysqld.exeが起動時に自動的に読み込んで
  コマンドオプションは不要となる



  ・設定ファイル(my.ini)中でconsoleオプションを有効にすれば、
  エラーログを標準出力に出力しながらの動作をする




    サーバの起動も停止も簡単!
複数サーバの同時起動
①サーバを停止する
②インストールディレクトリをコピーして複製を作る
   オリジナルがC:¥MySQL¥mysql-5.5.28-win32にあるとして、
     C:¥MySQL¥mysql_1
     C:¥MySQL¥mysql_2
   の2つをxcopyコマンドの/sオプションで再帰的な複製する例を示す

   $ xcopy /s C:¥MySQL¥mysql-5.5.28-win32 C:¥MySQL¥mysql_1
   $ xcopy /s C:¥MySQL¥mysql-5.5.28-win32 C:¥MySQL¥mysql_2
   (エクスプローラなどのマウス操作でコピーしてもOKです)
③設定ファイルを書き換える (各々のインストールディレクトリのmy.iniを編集)
    以下の設定が重複しないようにする
       ・portの設定
       ・(有れば) server-idの設定
       ・絶対パスで指定した設定
     (相対パスは各々のbasedir(=インストールディレクトリ)からのパスとなる)
④複製先のbin/mysld.exeをダブルクリックして、サーバを起動する
    複製後も初回実行時は、ファイアウォールのダイアログが出るので、
     “ブロックを解除する”ボタンをクリックする

⑤続いて、もう一つの複製先のbin/mysqld.exeもダブルクリックで、起動させる
MySQL入門後

   オレは ようやく のぼりはじめた ばかりだからな
   この はてしなく遠い MySQL坂をよ
MySQL入門後(1)
ここまでで、自分の好きに触れるMySQL環境ができました。
ここからは、実機で触りながら勉強していきましょう。
というわけで、MySQLの情報を得る場所を紹介します
①日本MySQLユーザー会のメーリングリスト
http://www.mysql.gr.jp/ml.html


②MySQL公式サイト
http://www-jp.mysql.com/



③OTNセミナー オンデマンドコンテンツ
 Oracleが公開しているセミナーのビデオです。MySQLもあります
http://www.oracle.com/technetwork/jp/ondemand/database/mysql/

                   (これの「MySQL入門概要編」を見れば、今回の資料要らなかったような…)



 ④MySQLリファランスマニュアル
 http://dev.mysql.com/doc/
                                         (ただし、日本語訳はMySQL5.1まで)
MySQL入門後(2)

 ⑤MySQLバグデータベース
 未知のトラブルかなと思ったら、ここでサーチしてみましょう
  (英語だが、バグ報告だとなんとなく意味が分かる)
 http://bugs.mysql.com/

            最近は、workbenchのバグ報告ばかりだ…




 ⑥ブログ
 MySQLのブログの集積所
 ・Planet MySQL http://jp.planet.mysql.com/



     特に、更新が多いブログはReaderで、RSSを取得するとよい
     ・SH2の日記         http://d.hatena.ne.jp/sh2/
     ・漢(オトコ)のコンピュータ道 http://nippondanji.blogspot.jp/
     ・(ひ)メモ          http://d.hatena.ne.jp/hirose31/
MySQL入門後(3)
⑦Twiter
最近は、MySQLの最新の情報はTwiterで流れていることが多いです。
自分でTweetしなくとも、必須です。
 フォローするアカウントは、以下のページを参考に
“漢のコンピュータ道:MySQLerのTwitterアカウントまとめ”
http://nippondanji.blogspot.jp/2009/10/mysqlertwitter.html

   ハッシュタグ #mysql_jp をつけてtweetとすると、いろんな人に拾われる確率アップです


⑧ソースを読む
MySQLはFLOSSなので、分からないことがあった時の究極の解決法はこれです。
入手先 http://dev.mysql.com/downloads/mysql/
最新版 https://launchpad.net/mysql-server
    コードホスティングはLaunchPad(2008年にBitKeeperから移転)
    バージョン管理はbazzar
                                      githubとgitに移行してくれると楽だなあ

 ソースを読むのは勉強になる。でも、一人で読むのはしんどい

 ⑨勉強会に参加しましょう
 ・IT勉強会カレンダー
  http://bit.ly/itcal
MySQL入門後(おまけ)
  ①“MySQL Cheat Sheet”を印刷して座右に置きましょう
  “漢(オトコ)のコンピュータ道” @nippondanjiさんのMySQLチートシート(カンペ)
  http://www.mysqlpracticewiki.com/files/cheat-sheet.pdf


  ②“MySQL[plus] awards 2011”を見ていろんなアプリを試そう
  MySQLは世界中で人気があるDBなので、有償、無償の色々なアプリがあります

  別に権威のある賞ではなくブログ書いた人の個人的な選考でしょうが、
  聞いたことないアプリもあったりして面白いので、手当たり次第に試してみると、
  新しい発見があるかもしれません
  http://www.mysqlplus.net/2012/01/05/vote-mysqlplus-community-awards-2011/
        樋口さんのHandolerSocketとか、
        松信さんのMHAとか、
        木下さんが過去に作られたXtraBackupとか、
        日本の開発者が作ったツールも結構入っています
◆ ご愛読ありがとうございました

  男坂の「未完」の絵
  http://riasu.up.d.seesaa.net/riasu/image/otokosaka47362.gif
  http://riasu.seesaa.net/article/23979138.html

Mais conteúdo relacionado

Mais procurados

Handlersocket etc. 20110906
Handlersocket etc. 20110906Handlersocket etc. 20110906
Handlersocket etc. 20110906akirahiguchi
 
お金が無いときのMySQL Cluster頼み
お金が無いときのMySQL Cluster頼みお金が無いときのMySQL Cluster頼み
お金が無いときのMySQL Cluster頼みaoike
 
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQl 5.6新機能解説@第一回 中国地方DB勉強会MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQl 5.6新機能解説@第一回 中国地方DB勉強会Mikiya Okuno
 
MySQLチューニング
MySQLチューニングMySQLチューニング
MySQLチューニングyoku0825
 
MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間hiroi10
 
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09Mikiya Okuno
 
MySQLトラブル解析入門
MySQLトラブル解析入門MySQLトラブル解析入門
MySQLトラブル解析入門Mikiya Okuno
 
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
[C21] MySQL Cluster徹底活用術 by Mikiya OkunoInsight Technology, Inc.
 
MySQL 5.7 トラブルシューティング 性能解析入門編
MySQL 5.7 トラブルシューティング 性能解析入門編MySQL 5.7 トラブルシューティング 性能解析入門編
MySQL 5.7 トラブルシューティング 性能解析入門編Mikiya Okuno
 
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話Takahiro Okumura
 
MySQLやSSDとかの話 前編
MySQLやSSDとかの話 前編MySQLやSSDとかの話 前編
MySQLやSSDとかの話 前編Takanori Sejima
 
MySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slaveMySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slaveTakanori Sejima
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話Yoshinori Matsunobu
 
What's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 InnoDBWhat's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 InnoDBMikiya Okuno
 
MHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQLMHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQLyoku0825
 
Art of MySQL Replication.
Art of MySQL Replication.Art of MySQL Replication.
Art of MySQL Replication.Mikiya Okuno
 
AWSのRedHatにMySQL最速インストール
AWSのRedHatにMySQL最速インストールAWSのRedHatにMySQL最速インストール
AWSのRedHatにMySQL最速インストールsakaik
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1Ryosuke IWANAGA
 
MySQL clients
MySQL clientsMySQL clients
MySQL clientsyoku0825
 

Mais procurados (20)

MySQLの冗長化 2013-01-24
MySQLの冗長化 2013-01-24MySQLの冗長化 2013-01-24
MySQLの冗長化 2013-01-24
 
Handlersocket etc. 20110906
Handlersocket etc. 20110906Handlersocket etc. 20110906
Handlersocket etc. 20110906
 
お金が無いときのMySQL Cluster頼み
お金が無いときのMySQL Cluster頼みお金が無いときのMySQL Cluster頼み
お金が無いときのMySQL Cluster頼み
 
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQl 5.6新機能解説@第一回 中国地方DB勉強会MySQl 5.6新機能解説@第一回 中国地方DB勉強会
MySQl 5.6新機能解説@第一回 中国地方DB勉強会
 
MySQLチューニング
MySQLチューニングMySQLチューニング
MySQLチューニング
 
MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間MySQL Clusterを運用して10ヶ月間
MySQL Clusterを運用して10ヶ月間
 
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
カジュアルにMySQL Clusterを使ってみよう@MySQL Cluster Casual Talks 2013.09
 
MySQLトラブル解析入門
MySQLトラブル解析入門MySQLトラブル解析入門
MySQLトラブル解析入門
 
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
[C21] MySQL Cluster徹底活用術 by Mikiya Okuno
 
MySQL 5.7 トラブルシューティング 性能解析入門編
MySQL 5.7 トラブルシューティング 性能解析入門編MySQL 5.7 トラブルシューティング 性能解析入門編
MySQL 5.7 トラブルシューティング 性能解析入門編
 
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
MySQL 4.0で9年動き続けたサーバを リプレイスしてバージョンアップした話
 
MySQLやSSDとかの話 前編
MySQLやSSDとかの話 前編MySQLやSSDとかの話 前編
MySQLやSSDとかの話 前編
 
MySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slaveMySQL5.7 GA の Multi-threaded slave
MySQL5.7 GA の Multi-threaded slave
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
What's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 InnoDBWhat's New in MySQL 5.7 InnoDB
What's New in MySQL 5.7 InnoDB
 
MHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQLMHAの次を目指す mikasafabric for MySQL
MHAの次を目指す mikasafabric for MySQL
 
Art of MySQL Replication.
Art of MySQL Replication.Art of MySQL Replication.
Art of MySQL Replication.
 
AWSのRedHatにMySQL最速インストール
AWSのRedHatにMySQL最速インストールAWSのRedHatにMySQL最速インストール
AWSのRedHatにMySQL最速インストール
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
MySQL clients
MySQL clientsMySQL clients
MySQL clients
 

Destaque

MySQLの系譜について少々
MySQLの系譜について少々MySQLの系譜について少々
MySQLの系譜について少々yoku0825
 
サバフェス上位入賞者にみる ioMemory×MySQL 最新チューニング教えます
サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えますサバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます
サバフェス上位入賞者にみる ioMemory×MySQL 最新チューニング教えますIDC Frontier
 
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93hiyohiyo
 
Windows8/8.1時代のWin32プログラミング #sapporocpp
Windows8/8.1時代のWin32プログラミング #sapporocppWindows8/8.1時代のWin32プログラミング #sapporocpp
Windows8/8.1時代のWin32プログラミング #sapporocpphiyohiyo
 
Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけようKouji Matsui
 
Osc2015北海道 札幌my sql勉強会_波多野_r3
Osc2015北海道 札幌my sql勉強会_波多野_r3Osc2015北海道 札幌my sql勉強会_波多野_r3
Osc2015北海道 札幌my sql勉強会_波多野_r3Nobuhiro Hatano
 
超入門データベース基礎の基礎
超入門データベース基礎の基礎超入門データベース基礎の基礎
超入門データベース基礎の基礎Matsuzawa Fumiaki
 
[VisionariesSummit]「UXデザインがもたらす、これからの受託開発」
[VisionariesSummit]「UXデザインがもたらす、これからの受託開発」[VisionariesSummit]「UXデザインがもたらす、これからの受託開発」
[VisionariesSummit]「UXデザインがもたらす、これからの受託開発」masashi takehara
 
テストコード入門
テストコード入門テストコード入門
テストコード入門小川 昌吾
 
40分濃縮 PHP classの教室
40分濃縮 PHP classの教室40分濃縮 PHP classの教室
40分濃縮 PHP classの教室Yusuke Ando
 
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるTakuya Sato
 
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015Hikari Fukasawa
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編infinite_loop
 
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)Shinichi Hirauchi
 
[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)
[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)
[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)masashi takehara
 
MySQLおじさんの逆襲
MySQLおじさんの逆襲MySQLおじさんの逆襲
MySQLおじさんの逆襲yoku0825
 

Destaque (20)

MySQLはじめの第一歩
MySQLはじめの第一歩MySQLはじめの第一歩
MySQLはじめの第一歩
 
MySQL入門
MySQL入門MySQL入門
MySQL入門
 
MySQLの系譜について少々
MySQLの系譜について少々MySQLの系譜について少々
MySQLの系譜について少々
 
サバフェス上位入賞者にみる ioMemory×MySQL 最新チューニング教えます
サバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えますサバフェス上位入賞者にみる ioMemory×MySQL  最新チューニング教えます
サバフェス上位入賞者にみる ioMemory×MySQL 最新チューニング教えます
 
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
Visual Studio Community 2013 で始めるプログラミング Win32/MFC #clrh93
 
Windows8/8.1時代のWin32プログラミング #sapporocpp
Windows8/8.1時代のWin32プログラミング #sapporocppWindows8/8.1時代のWin32プログラミング #sapporocpp
Windows8/8.1時代のWin32プログラミング #sapporocpp
 
Hello, systemd
Hello, systemdHello, systemd
Hello, systemd
 
Win32 APIをてなずけよう
Win32 APIをてなずけようWin32 APIをてなずけよう
Win32 APIをてなずけよう
 
Osc2015北海道 札幌my sql勉強会_波多野_r3
Osc2015北海道 札幌my sql勉強会_波多野_r3Osc2015北海道 札幌my sql勉強会_波多野_r3
Osc2015北海道 札幌my sql勉強会_波多野_r3
 
超入門データベース基礎の基礎
超入門データベース基礎の基礎超入門データベース基礎の基礎
超入門データベース基礎の基礎
 
PHP超入門@LL温泉
PHP超入門@LL温泉PHP超入門@LL温泉
PHP超入門@LL温泉
 
[VisionariesSummit]「UXデザインがもたらす、これからの受託開発」
[VisionariesSummit]「UXデザインがもたらす、これからの受託開発」[VisionariesSummit]「UXデザインがもたらす、これからの受託開発」
[VisionariesSummit]「UXデザインがもたらす、これからの受託開発」
 
テストコード入門
テストコード入門テストコード入門
テストコード入門
 
40分濃縮 PHP classの教室
40分濃縮 PHP classの教室40分濃縮 PHP classの教室
40分濃縮 PHP classの教室
 
PHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考えるPHPでセキュリティを真面目に考える
PHPでセキュリティを真面目に考える
 
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
PHPer女子が語る2015!こんなコードを書くヒトはモテない〜コラボ編〜@PHPカンファレンス2015 #phpcon2015
 
新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編新入社員のための大規模ゲーム開発入門 サーバサイド編
新入社員のための大規模ゲーム開発入門 サーバサイド編
 
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
世界一簡単なGithub入門(githubは無料で使用する場合、全てのファイルが公開されていることにご注意ください)
 
[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)
[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)
[Slide]闇アジャイラーvs光アジャイラーforDevLOVE(EnergizedWorkLT祭)
 
MySQLおじさんの逆襲
MySQLおじさんの逆襲MySQLおじさんの逆襲
MySQLおじさんの逆襲
 

Semelhante a WindowsでMySQL入門

[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏Insight Technology, Inc.
 
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~sakaik
 
ASP.NET vNextの全貌
ASP.NET vNextの全貌ASP.NET vNextの全貌
ASP.NET vNextの全貌A AOKI
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門sandai
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみようMasahiko Hashimoto
 
OpenNebula on Ubuntu
OpenNebula on UbuntuOpenNebula on Ubuntu
OpenNebula on Ubuntuautumnalsky
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-靖 小田島
 
SQL Server 2014 In Memory OLTP Overview
SQL Server 2014 In Memory OLTP OverviewSQL Server 2014 In Memory OLTP Overview
SQL Server 2014 In Memory OLTP OverviewMasayuki Ozawa
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
 
HDPをWindowsで動かしてみた
HDPをWindowsで動かしてみたHDPをWindowsで動かしてみた
HDPをWindowsで動かしてみたadachij2002
 
VM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみようVM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみようMasayuki Ozawa
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用についてLINE Corporation
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1Makoto Haruyama
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門じゅん なかざ
 
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuronekoKohki Nakashima
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会Yasutaka Hamada
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用Shinya Okano
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境yut148atgmaildotcom
 

Semelhante a WindowsでMySQL入門 (20)

20180216 sapporo techbar_db_migration
20180216 sapporo techbar_db_migration20180216 sapporo techbar_db_migration
20180216 sapporo techbar_db_migration
 
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏
[20171019 三木会] データベース・マイグレーションについて by 株式会社シー・エス・イー 藤井 元雄 氏
 
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
OSC2017 Hokkaido. MySQL今こそインストールを極めよう~改めて考える環境構築~
 
ASP.NET vNextの全貌
ASP.NET vNextの全貌ASP.NET vNextの全貌
ASP.NET vNextの全貌
 
【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門【学習メモ#1st】12ステップで作る組込みOS自作入門
【学習メモ#1st】12ステップで作る組込みOS自作入門
 
自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう自分色のLinuxホームサーバーを作ってみよう
自分色のLinuxホームサーバーを作ってみよう
 
OpenNebula on Ubuntu
OpenNebula on UbuntuOpenNebula on Ubuntu
OpenNebula on Ubuntu
 
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
AWSとAnsibleで実践!プロビジョニング入門‐Lamp+Laravel-
 
Mysql casial01
Mysql casial01Mysql casial01
Mysql casial01
 
SQL Server 2014 In Memory OLTP Overview
SQL Server 2014 In Memory OLTP OverviewSQL Server 2014 In Memory OLTP Overview
SQL Server 2014 In Memory OLTP Overview
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
HDPをWindowsで動かしてみた
HDPをWindowsで動かしてみたHDPをWindowsで動かしてみた
HDPをWindowsで動かしてみた
 
VM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみようVM ロールで仮想デスクトップ環を作ってみよう
VM ロールで仮想デスクトップ環を作ってみよう
 
LINEのMySQL運用について
LINEのMySQL運用についてLINEのMySQL運用について
LINEのMySQL運用について
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
 
PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門PHP開発者のためのNoSQL入門
PHP開発者のためのNoSQL入門
 
20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko20121115 fukuoka sublime0_kuroneko
20121115 fukuoka sublime0_kuroneko
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会
 
XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用XenServerによるお手軽開発サーバ運用
XenServerによるお手軽開発サーバ運用
 
配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境配布用Beginnerならきっと役立つmaster slave環境
配布用Beginnerならきっと役立つmaster slave環境
 

Último

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 

Último (9)

SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 

WindowsでMySQL入門

  • 1. Windows で MySQL入門 担当: @h141gm 対象者:MySQL に興味、関心のある人 レベル:初級者向け
  • 2. 自己紹介  石井と申します。( twitterID: @h141gm )  いわゆる”SIer”な仕事をしています。  業務でMySQLがらみの案件は今年まだ2本  仕事はPostgreSQLとOracleばかり  いかんMySQL分が不足してきた…  今回の資料は、slideshareにアップ予定です  アップできたらhttp://h141.github.com/ にリンクします  パワポの作り方が下手なので全面的に白いです
  • 3. プロローグ(前説) 最初に、お詫びとお断り 今回はWindowsとMySQLの話ですが 「最新のWindows Server 2012を使って MySQL Enterprise Editionを本格運用するぜー」 とか 「libmysqld.dll(←mysql”d”の方)を使って MySQLサーバ組み込みWindowsアプリを作るぜー」 とかそういった派手な内容ではありません 「手元にあるのはWindows XP時代のプアなマシンだけど、 MySQLのテスト環境だけは欲しいなあ…」 という貧乏なお話です。
  • 4. 前説(2) OSS系の勉強会にくるとMBA(Mac Book Air)ばっかりですが 会社で個人用に配布されるPCって、100%、Windowsですよね しかもDellの型落ちのWindowsXPマシンだったりしますよね VMwareやOracleVMを入れてLinuxを動かしたくても VT-dもVT-xすら付いてないので重くてしょうがなかったりしますよね Eclipseが重過ぎるので、自然とnetbeans派になりますよね メモリが2GBで、CPUがCerelonでHDDは250GBですよね(断言) 決して、具体的にどこかの会社ディスってるとか、 そういう話ではないですよ♪
  • 5. 前説(3) 今日の目標(テーマ)は、 「こういう腐ったWindowsマシンが配られた不幸な新人のPCに MySQLを入れさせて、MySQLerに洗脳してしまおう」 です。 初心者ではない方も、 「自分が新人教育係ならこう説明するな」 「あそこ、間違ってるwwwwwww」 とかそういう目線で、お楽しみください 愛のあるツッコミ、“随時“募集中です。
  • 6. テスト環境 ・Windows XP SP3 (32bit) 日本語版 (最新のパッチまでアップデート) ・MS Security Essentials ・MySQL 5.5.28 CommunityServer版 上記をOracleVM VirtualBox上の仮想環境で構築しました リソースは、CPUコア1個、メモリ500MB です
  • 7. アジェンダ  WindowsでMySQLを動かす  パッケージの入手  ファイルの展開  ファイル構成  サーバ起動(テスト起動)  接続確認  サーバ停止  設定変更  サーバ起動  複数サーバの同時起動 ここは時間があれば説明する  MySQL入門後  できた環境で色々な状況を試す  1. WARMバックアップとリカバリ  2. レプリケーション  3.BLACKHOLEレプリケーション
  • 8. ◆WindowsでMySQLを動かす  パッケージの入手  ファイルの展開  ファイル構成  サーバ起動(テスト起動)  接続確認  サーバ停止  設定変更  サーバ起動  複数サーバの同時起動  MySQL入門後
  • 9. パッケージの入手 MySQL Community Serverのダウンロードページへアクセス 公式: http://www.mysql.com/downloads/mysql/ 開発: http://dev.mysql.com/downloads/mysql/
  • 11. ・どれかを選んで”download”ボタンをクリックするとユーザー登録画面になるが、 下のほうのリンク ”No thanks, just take me to the downloads!”をクリックする ことで、登録しないで、ダウンロードすることができる ・ファイルをPCに保存する
  • 12. ・MySQL Installer for Windows mysql-installer-community-5.5.28.2.msi 207.0M 2011年9月に追加され(5.5.15~) 、2012年8月頃に改良された Serverの他WorkBenchなども一括でインストールできる統合インストーラ ・ MySQL Server msi (インストーラ) mysql-5.5.28-win32.msi 31.1M “Server”のGUIインストーラ ・ MySQL Server zip (アーカイブ) mysql-5.5.28-win32.zip 143.3M バイナリ等とデータディレクトリを固めたアーカイブファイル ・ソースファイル mysql-5.5.28.zip 28.2M ソースファイル。コンパイルが必要
  • 13. 【疑問】 色々なパッケージが有るけど、結局どれが良いの? 【回答】 簡単なテストとかMySQLを触ってみたいという人には、 “zipアーカイブ” 、超オススメ 【理由】 ・インストールは、展開してディレクトリ置くだけなので、超簡単 データディレクトリが作成済み mysql_install_dbでの初期化不要 ・レジストリを汚さない ・サービスを作らない ・起動停止も簡単 ・複数サーバの起動もできる ・アンインストールも、サーバを停止して、ディレクトリを消すだけで簡単 ・ソースからのコンパイルは多言語処理のソースと日本語Windows の間で問題が発生するので避けたい
  • 14. ファイル展開(1) (この資料で“$”は、コマンドプロンプトの ・MySQL用ディレクトリとして、C:¥MySQLを作る。 プロンプトとして使用します) $ md C:¥ MySQL 【注意①】 基本的にどこにおいても大丈夫だが、 後のことを考えて、日本語やスペースは使わない方がよい 【注意②】5.1以前は、インストール場所が強制されていたので、 一部の古いアプリでは、 C:¥mysqlにインストールされる前提で動く可能性がある ・ダウンロードしたmysql-5.5.28-win32.zipをダブルクリックして展開する ・mysql-5.5.28-win32ディレクトリをC:¥ MySQLの下にコピーする インストールはこれだけで完了です!
  • 15. ファイル展開(2) ・【重要】ファイルを展開したら最初にやるべきこと サーバの起動前にデータディレクトリdataを別の場所にコピー保存する データディレクトリとはC:¥MySQL¥mysql-5.5.28-win32¥data のディレクトリのこと 【理由】 データディレクトリを作成するのに使われる“scripts/mysql_install_db.pl” は、 perlスクリプトなので、Windowsにperlを導入しないと初期化が面倒。 なので、あらかじめ、初期化済みのdataディレクトリを保存しておく。 これでいつでも、データは初期化できます。 安心してDBをいじり倒しましょう ・DBのデータが壊れたかもと思ったら、上記のコピーを用いて 以下の手順で、最初の状態に復旧できる ①サーバを停止(後述) ②C:¥MySQL¥mysql-5.5.28-win32¥data ディレクトリを削除 ③保存しておいたdata ディレクトリを C:¥MySQL¥mysql-5.5.28-win32¥の下にコピーする
  • 16. ファイル構成 展開後のディレクトリ構成はこうなっている $ dir C:¥MySQL¥mysql-5.5.28-win32¥ bin/ …実行ファイル data/ … (初期化済み)データディレクトリ docs/ …ドキュメント include/ …Cのヘッダファイル lib/ …Cのライブラリファイル(dllファイル) mysql-test/ …MySQLテストスイート(Perlスクリプト) scripts/ …データディレクトリ初期化スクリプト(Perlスクリプト) share/ …色々な言語ファイル と 初期化用SQLファイル sql-bench/ …ベンチマーク(Perlスクリプト) README …配布物についての簡単な説明 COPYING …GPL v2 ファイル my-small.ini …設定ファイルサンプル(メモリ64M以下) my-medium.ini …設定ファイルサンプル(メモリ128Mくらい) my-large.ini …設定ファイルサンプル(メモリ512Mくらい) my-huge.ini …設定ファイルサンプル(メモリ1~2Gくらい) my-innodb-heavy-4G.ini …設定ファイルサンプル(メモリ4Gくらい) このディレクトリはインストールディレクトリと呼ばれる
  • 17. ・実行ファイルの簡単な解説 重要度に応じて、ミシュランガイド風に★付き (個人的な感想です) 【exeファイル】 ・bin/ディレクトリ mysqld.exe … 【★★★】MySQLサーバ mysql.exe … 【★★★】MySQLクライアントツール mysqladmin.exe … 【★★★】MySQL管理ツール mysqldump.exe … 【★★★】バックアップ用にデータをSQLで出力 mysqlslap.exe …【★★】クライアントの負荷エミュレーション mysql_upgrade.exe …【★★】 MySQLのデータをアップグレードするツール mysqlbinlog.exe …【★★】バイナリログの内容を出力する mysqlimport.exe … 【★】テキストファイルからのデータインポート perror.exe …【★】エラーコードの説明を表示 my_print_defaults.exe …【★】設定ファイルから指定された[グループ]の設定を抜き出す mysqlcheck.exe …【☆】テーブルの検査、分析、修復(MyISAM用)、最適化 myisamchk.exe …【☆】テーブルの検査、分析、修復(MyISAM用) 、最適化 mysqlshow.exe … データベース、テーブル、カラムの情報表示 mysql_tzinfo_to_sql.exe …タイムゾーンテーブルのロード mysql_plugin.exe …どのMySQLプラグインをロードするか管理するツール
  • 18. 【exeファイル】続き ・bin/ディレクトリ続き mysqld-debuug.exe … デバッグメッセージ付きMySQLサーバ mysqltest.exe …MySQLのテストスイート言語 (リグレッションテストに使われる) mysql_client_test.exe …クライアントAPIのテストする myisam_ftdump.exe … MyISAMの全文検索の情報表示 myisampack.exe … MyISAMテーブルを圧縮、読み取り専用にする myisamlog.exe … MyISAMの動作ログを表示する (設定log-isamで出力されるMyISAMのデバッグ用バイナリファイルの解析) echo.exe …普通のechoコマンド? replace.exe …sedっぽいコマンド? resolveip.exe …nslookupっぽいコマンド? mysql_embedded.exe …多分、組み込み用クライアント? mysqltest_embedded.exe …多分、組み込み用テストスイート?
  • 19. 【Perlスクリプト】 ・bin/ディレクトリ mysql_secure_installation.pl …【★★】初期データベースをセキュアにする (testスキーマ削除、匿名ユーザアクセス権限削除、rootのパスワード設定など) mysqldumpslow.pl …【★】スロークエリのレポート出力 (設定log-slow-queriesで出力されるログファイル) mysqlhotcopy.pl …【★】MyISAMのホットバックアップ mysqld_multi.pl …複数のMySQLサーバの起動停止 mysql_convert_table_format.pl …指定されたDBの全テーブルのストレージエンジンを変更 (内部で”ALTER TABLE ENGINE=“を繰り返しているだけ) mysql_config.pl …コンパイルオプションの表示 ・mysql-test/ ディレクトリ mysql-test-run.pl …リグレッションテストをする mysql-stress-test.pl …ストレステスト? ・scripts/ディレクトリ mysql_install_db.pl …【★★★】初期データベースを作成する mysqld.exeを—bootstrapモードで起動させ、次に示すSQL文を実行させることで、初期データベースを作成する
  • 20. 【SQLファイル】 ・share/ ディレクトリ mysql_system_tables.sql …【★】システムデータベースのテーブルを作成する mysql_system_tables_data.sql …【★】システムデータベースにデータをセットする mysql_system_tables_data.sqlで、 初期のtestスキーマの作成やrootユーザー匿名ユーザーが作成される fill_help_tables.sql …【☆】システムデータベースのhelp用テーブルに文をセット mysql_test_data_timezone.sql …システムデータベースのタイムゾーンのテーブル にデータをセット(使用せず?) (include/ や mysql-test/ にあるSQLファイルやexeファイルは省略しています)
  • 21. サーバ起動 (テスト起動) ①コマンドプロンプト(cmd.exe)を起動させる ②サーバファイルmysqldを起動させる $ C:¥MySQL¥mysql-5.5.28-win32¥bin¥mysqld.exe --console 初回実行時は、ファイアウォールのダイアログが出るので、 “ブロックを解除する”ボタンをクリックする ・ 環境変数PATHにmysqldへのパスは追加されていないのでmysqld.exeはフルパスで指定する。 ・この時点で設定ファイルは存在しないがMySQLサーバはデフォルトの設定だけで起動可能 (オプションがいらなければmysqld.exeをダブルクリックするだけでも起動可能)
  • 22. ・オプション--consoleが、重要 エラーログへの出力をコンソール画面に表示し、Ctrl+Cでサーバを停止できるようになる $ C:¥ MySQL¥ mysql-5.5.28-win32¥bin¥mysqld.exe --console 121017 0:07:14 [Note] Plugin 'FEDERATED' is disabled. 121017 0:07:14 InnoDB: The InnoDB memory heap is disabled 121017 0:07:14 InnoDB: Mutexes and rw_locks use Windows interlocked functions 121017 0:07:14 InnoDB: Compressed tables use zlib 1.2.3 121017 0:07:14 InnoDB: Initializing buffer pool, size = 128.0M 121017 0:07:14 InnoDB: Completed initialization of buffer pool 121017 0:07:14 InnoDB: highest supported file format is Barracuda. 121017 0:07:14 InnoDB: Waiting for the background threads to start ここ重要 121017 0:07:15 InnoDB: 1.1.8 started; log sequence number 1595675 121017 0:07:15 [Note] Server hostname (bind-address): '0.0.0.0'; port: 3306 121017 0:07:15 [Note] - '0.0.0.0' resolves to '0.0.0.0'; 121017 0:07:15 [Note] Server socket created on IP: '0.0.0.0'. 121017 0:07:15 [Note] Event Scheduler: Loaded 0 events 121017 0:07:15 [Note] C:¥MySQL¥mysql-5.5.28-win32¥bin¥mysqld.exe: ready for connections. コマンドプロンプト上で--consoleオプションを付けてmysqld.exeを実行させると、 上記のような起動ログを出して待ち状態になる。 このウインドウを[×]で閉じてはいけない 画面操作の邪魔な時は、ウインドウを最小化しておくとよい。
  • 23. 接続確認(1) ①接続確認のために、もう一つコマンドプロンプトを起動させる (コマンドプロンプトの“プロパティ”から”画面の色”で”画面の背景”を変えると サーバとクライアントの区別が付きやすいので便利) ②対話型のクライアントプログラム(mysql.exe)を起動する $ C:¥MySQL¥mysql-5.5.28-win32¥bin¥mysql.exe -uroot Welcome to the MySQL monitor. Commands end with ; or ¥g. Your MySQL connection id is 1 Server version: 5.5.28 MySQL Community Server (GPL) Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '¥h' for help. Type '¥c' to clear the current input statement. mysql>
  • 24. 接続確認(2) $ C:¥ MySQL¥ mysql-5.5.28-win32¥bin¥mysql.exe –uroot test ・ クライアントのmysql.exeもフルパスで指定する。 ・ -uオプションは、接続するユーザーの指定 ここでは、初期化時に自動的に作成される管理用のrootユーザーで接続している オプションとそのパラメータの間は離さないで書くほうがよい ○ -uroot △ -u root (参考:○ -ppass ×-p pass ) ・オプション-Pでポート番号を指定していない場合、 デフォルトのポート番号として3306が使用される ・(余談)Windowsは、UNIXと接続がちょっと違う いわゆる”UNIXドメインソケット”を利用したプロセス間通信はできない つまり設定ファイルでのsocketの指定は意味がない 代わりにWindowsにしかない接続として、以下の2つがある ・”名前付きパイプ” …設定項目enable_named_pipe ・”共有メモリ” … 設定項目 shared-memory, shared-memory-base-name (ただしデフォルトではどちらも無効になっているため 必ずTCP/IPで接続される)
  • 25. 接続確認(3) (余談続き)そのほかのWindows版とUNIX版の違い ・MySQLスキーマ名、テーブル名はファイルシステムに依存するため Windows(NTFS)では大文字小文字の区別はしない (ただし、オプションやパスワードはどのOSでも、大文字小文字を区別する) (パスワードの大文字小文字を区別しないOracle(11g以前)とはこの点が異なる) ・Windowsでも、lower_case_table_names=2と設定すると、大文字小文字 を保持した名前で ディレクトリやファイルを作成するが、アクセス時の名前の チェックでは 大文字小文字を区別しない。 (WindowsでC:¥HOGEディレクト リが存在する状態で、C:¥hogeディレクトリを作ろうとしても "指定されたファイ ル名が既に存在します"エラーになるのと同じ現象) ・UNIXのデフォルトと同じ値のlower_case_table_names=0と設定しても大 文字小文字が区別されるが、 大文字小文字を変えたテーブル名でMyISAM のテーブルにアクセスした場合、 インデックスデータが破壊される可能性が あるので、この設定をするのは止めた方が良い ・設定項目名は、”lower_case_table_names”と「テーブル」となっているが、 スキーマ名へも影響を与える ・ファイルパスの区切り文字が「¥」なので、エスケープ文字と重複する そのため、ファイルパスは「¥¥」または「/」を使用する必要がある
  • 26. 接続確認(4) ③サーバとの接続を切断 mysql> ¥q または mysql> quit または mysql> exit で切断する。 どれを使っても結果は同じ。 (Ctrl+Cでmysql.exeを終了させることでも切断可能) クライアントで切断をしても、サーバの動作へは影響ありません
  • 27. サーバ停止(1) mysqld.exeが起動しているコマンドプロンプト上で、 Ctrl+Cを押すと、MySQLサーバが停止する (mysqld.exe起動時に--consoleオプションを有効にしたため) 【注意】 コマンドプロンプトの[×]ボタンをクリックしてもサーバは停止しない mysld.exeプロセスは残ったままになる このような場合や、--consoleオプションを付けずにmysqld.exeを起動させた場合 タスクマネージャの”プロセス”からmysqld.exeのプロセスを停止させないほうが良い。 下記の【正式なシャットダウン方法】に従ってサーバを停止させる 【正式なシャットダウン方法】 ①別のコマンドプロンプトを起動させます ②mysqladmin.exeで、シャットダウンコマンドを実行します $ C:¥ MySQL¥ mysql-5.5.28-win32¥bin¥mysqladmin.exe -uroot shutdown -u ... サーバへ接続するユーザの指定 サーバの停止には、root権限が必要
  • 28. サーバ停止(2) MySQLのmysqladmin.exeコマンドでのshutdownには、 OracleやPostgreSQLのようなshutdownモードの指定はない 参考:他RDBMSのshutdownモード Oracle: NORMAL / TRANSACTIONAL / IMMEDIATE / ABORT PostgreSQL: smart / (transactionalは無し) / fast / immediate ちなみに、PostgreSQLの “pg_ctl”コマンドでの“shutdown”もモードを省略できるが、 これはデフォルトの”-m s” (smartモード)が選択されるのと同じ MySQLのshutdownは、以下のような流れでサーバ停止する ・1.シャットダウンプロセスの開始 (mysqladminを使用してshutodownを指示する方法以外に、 UNIXの場合はSIGTERM割り込み(要するにkillコマンド)で、 Windowsのサービスで起動させた場合はサーバマネージャで、 シャットダウンプロセスを開始できる) ・2.(必要なら)シャットダウンスレッドの作成 ・3.新規接続の拒否 ・4.現行の動作中のスレッドを順次停止していく ・5.ストレージエンジンのシャットダウン (詳細後述) ・6.サーバの停止
  • 29. サーバ停止(3) mysqladmin shutdownにモードの指定は無いのだが、 「・5ストレージエンジンのシャットダウン」の中の「innodbのシャットダウン」は、 シャットダウンのモードを選択できる innodbのシャットダウンは、 innodb_ fast_shutdownの設定で変化する 0...(安全、低速)ログの内容を完全にテーブルファイルへフラッシュする。 1...(デフォルト)終了前にチェックポイント処理を行う(fast shutdown) 2...(危険、高速)ログの内容をファイルへ反映するだけ、再起動後にはクラッシュリカバリが行われる innodb_ fast_shutdownは、Globalな動的システム変数なため、 mysql.exeで接続して変更することができるので、 動的にシャットダウンのモードを変更できる innodb_ fast_shutdownに1(デフォルト)が設定されている場合の挙動は、 だいたい、 Oracle”SHUTDOWN IMMEDIATE”や PostgreSQL”shutdown fast”と同じである
  • 30. 設定の変更(1) Windowsで設定ファイル(オプションファイル)名は、 ”my.ini”が使われることが多い (UNIX系で使用されるmy.cnfは、Windowsで.cnfが短縮ダイヤル用の拡張子なので エクスプローラのフォルダオプションを変更しないと使用できないため) 設定ファイルは以下の場所に設置できる ①C:¥WINDOWS¥my.iniまたはmy.cnf (環境変数%WINDIR%の直下) ②C:¥my.ini または C:¥my.cnf ③(ベースディレクトリ)¥my.iniまたはmy.cnf ④--defaults-extra-file=(パス)で指定されたファイル 設定項目ごとに、後から読んだファイルの値で上書きされる ただし、mysqld.exeのコマンドラインで--defaults-file=(パス)で 設定ファイルを指定すると、 サーバは上記の標準で読み込まれる設定ファイルをすべて無視し、 指定された設定ファイルからのみ、オプションを読み取る
  • 31. 設定変更(2) ・設定変更の反映 ①MySQLサーバを停止 ②設定ファイルを書き換えて保存する ③MySQLサーバの起動 【重要】 前にインストーラで入れた残骸のC:¥WINDOWS¥my.ini やC:¥my.iniが残ったままだと、 ” (ベースディレクトリ)¥my.ini”で設定して無い設定項目が設定される 【重要】 設定ファイルmy.ini は、”ファイルを保存”しないと、反映されない。 ・設定された状態の確認 mysql.exeクライアントでMySQLサーバに接続し、 サーバ変数を表示させて、状況を確認する $ C:¥MySQL¥mysql-5.5.28-win32¥bin¥mysql.exe -uroot MySQL> show variables;
  • 32. 設定変更(3) 推奨設定 C:¥MySQL¥mysql-5.5.28-win32¥my.ini [mysqld] console = 1 character_set_server = utf8 collation_server = utf8_general_ci transaction_isolation = READ-COMMITTED innodb_file_per_table innodb_buffer_pool_size = 256M innodb_log_buffer_size = 8M # innodb_log_file_size = 64M [mysql] default_character_set = cp932 注意:これは最低限の設定です “transaction_isolation = READ-COMMITTED“は、 オラクルデータベース出身者がネクストキーロックやギャップキーロックを嫌うので、緩くする設定 クライアント側のcp932は、Windows XPの標準の文字セットいわゆるShiftJISです
  • 33. 設定変更(4) MySQLパッケージに付属しているmy-*.iniファイルは古く、時代にあっていない 最適な設定ファイルを生成するための情報を示す ただし公開されている情報は、圧倒的にlinux向けが多い点に注意 ・公開されているmy.cnf ①@nippondanjiさんのmysqlのwiki上に公開されているもの http://mysqlpracticewiki.com/index.php/My.cnf%E3%82%B5%E3%83%B3%E 3%83%97%E3%83%AB wikiのトップ http://mysqlpracticewiki.com/ から、“My.cnfサンプル”で検索してもたどり着ける ②10月5日に、NHN Japan(旧ライブドア)の長野( @kazeburo )さんが、 githubにmy.cnfを公開しています http://blog.nomadscafe.jp/2012/10/mysql-mycnf-github.html ③「WordPress 高速化&スマート運用必携ガイド」を書いた岡本渉さんが、 Amazon EC2のmicroインスタンス上でのWordpressに特化した チューニング済みのAMIを公開しています http://dogmap.jp/2012/07/17/wordpress-ami-amimoto/ (ただし、perconaサーバ用だったり、特殊な環境専用だったりします)
  • 34. 設定変更(5) ・web上で動的にmy.cnfを生成するサイト ①“Percona Online Tools”の“Optimize your MySQL Server” ウイザード形式で、対話的にサーバの情報を指定していくことで my.cnfが生成される https://tools.percona.com/ (ユーザー登録が必要です) ・MySQLサーバ上で動的にmy.cnfを生成する ①“mysqltuner.pl” https://github.com/rackerhacker/MySQLTuner-perl サーバ内のメモリなどを検出して最適値をアドバイスするツール perlスクリプトです。 搭載メモリ量の自動読み取り機能などが、Windowsに対応していません (また、設定内容が少し古いかも知れません) ・最終的には、MySQLアーキテクチャを勉強して、ベンチを取りながら 設定を詰める必要がある
  • 35. 設定変更(6) (余談) MySQLの設定ファイルで、はまりやすいポイントを列挙します。 ①設定項目の単語の区切りの-(ハイフン)と_(アンダースコア)は、等価 log-bin もlog_binも同じことです ②設定項目は単一の名称だと区別ができるところまで書けば省略できる read-onlyは、read-oでも通ってしまう (ただし、linuxのrpmでインストールする場合に、標準で添付されるSystemV 起動スクリプト(/etc/init.d/mysql)中には、sedを使用するため、上記の表記の揺れを 許さないところが存在するので注意) ③設定項目名は、大文字小文字を区別する
  • 36. サーバ起動 ①サーバファイルmysqld.exeをダブルクリックして起動させる ・インストールディレクトリにmy.iniファイルを作成すれば、 mysqld.exeが起動時に自動的に読み込んで コマンドオプションは不要となる ・設定ファイル(my.ini)中でconsoleオプションを有効にすれば、 エラーログを標準出力に出力しながらの動作をする サーバの起動も停止も簡単!
  • 37. 複数サーバの同時起動 ①サーバを停止する ②インストールディレクトリをコピーして複製を作る オリジナルがC:¥MySQL¥mysql-5.5.28-win32にあるとして、 C:¥MySQL¥mysql_1 C:¥MySQL¥mysql_2 の2つをxcopyコマンドの/sオプションで再帰的な複製する例を示す $ xcopy /s C:¥MySQL¥mysql-5.5.28-win32 C:¥MySQL¥mysql_1 $ xcopy /s C:¥MySQL¥mysql-5.5.28-win32 C:¥MySQL¥mysql_2 (エクスプローラなどのマウス操作でコピーしてもOKです) ③設定ファイルを書き換える (各々のインストールディレクトリのmy.iniを編集) 以下の設定が重複しないようにする ・portの設定 ・(有れば) server-idの設定 ・絶対パスで指定した設定 (相対パスは各々のbasedir(=インストールディレクトリ)からのパスとなる) ④複製先のbin/mysld.exeをダブルクリックして、サーバを起動する 複製後も初回実行時は、ファイアウォールのダイアログが出るので、 “ブロックを解除する”ボタンをクリックする ⑤続いて、もう一つの複製先のbin/mysqld.exeもダブルクリックで、起動させる
  • 38. MySQL入門後  オレは ようやく のぼりはじめた ばかりだからな  この はてしなく遠い MySQL坂をよ
  • 40. MySQL入門後(2) ⑤MySQLバグデータベース 未知のトラブルかなと思ったら、ここでサーチしてみましょう (英語だが、バグ報告だとなんとなく意味が分かる) http://bugs.mysql.com/ 最近は、workbenchのバグ報告ばかりだ… ⑥ブログ MySQLのブログの集積所 ・Planet MySQL http://jp.planet.mysql.com/ 特に、更新が多いブログはReaderで、RSSを取得するとよい ・SH2の日記 http://d.hatena.ne.jp/sh2/ ・漢(オトコ)のコンピュータ道 http://nippondanji.blogspot.jp/ ・(ひ)メモ http://d.hatena.ne.jp/hirose31/
  • 41. MySQL入門後(3) ⑦Twiter 最近は、MySQLの最新の情報はTwiterで流れていることが多いです。 自分でTweetしなくとも、必須です。 フォローするアカウントは、以下のページを参考に “漢のコンピュータ道:MySQLerのTwitterアカウントまとめ” http://nippondanji.blogspot.jp/2009/10/mysqlertwitter.html ハッシュタグ #mysql_jp をつけてtweetとすると、いろんな人に拾われる確率アップです ⑧ソースを読む MySQLはFLOSSなので、分からないことがあった時の究極の解決法はこれです。 入手先 http://dev.mysql.com/downloads/mysql/ 最新版 https://launchpad.net/mysql-server コードホスティングはLaunchPad(2008年にBitKeeperから移転) バージョン管理はbazzar githubとgitに移行してくれると楽だなあ ソースを読むのは勉強になる。でも、一人で読むのはしんどい ⑨勉強会に参加しましょう ・IT勉強会カレンダー http://bit.ly/itcal
  • 42. MySQL入門後(おまけ) ①“MySQL Cheat Sheet”を印刷して座右に置きましょう “漢(オトコ)のコンピュータ道” @nippondanjiさんのMySQLチートシート(カンペ) http://www.mysqlpracticewiki.com/files/cheat-sheet.pdf ②“MySQL[plus] awards 2011”を見ていろんなアプリを試そう MySQLは世界中で人気があるDBなので、有償、無償の色々なアプリがあります 別に権威のある賞ではなくブログ書いた人の個人的な選考でしょうが、 聞いたことないアプリもあったりして面白いので、手当たり次第に試してみると、 新しい発見があるかもしれません http://www.mysqlplus.net/2012/01/05/vote-mysqlplus-community-awards-2011/ 樋口さんのHandolerSocketとか、 松信さんのMHAとか、 木下さんが過去に作られたXtraBackupとか、 日本の開発者が作ったツールも結構入っています
  • 43. ◆ ご愛読ありがとうございました 男坂の「未完」の絵 http://riasu.up.d.seesaa.net/riasu/image/otokosaka47362.gif http://riasu.seesaa.net/article/23979138.html