MySQLのテンプレ設定ファイルの使い方

拙著『Webアプリケーション構築入門』は入門書なので、インデックスを張ってEXPLAIN文で調べるくらいのことは書いてありますが、データベースのパフォーマンスチューニングについての本格的な説明は書いありません。p.113のコラムで、MySQLの設定ファイルのテンプレートと参考文献を紹介している程度です。

MySQLのチューニングは、設定ファイルmy.cnfで行うのが基本ですが、設定項目がたくさんあるのでどこをどう変えていいのかよくわかりません。そういう場合のために、MySQLにはあらかじめ設定ファイルが用意されています(拙著ではUbuntu版とMac版のみ。XAMPP 1.8.1でも用意されています)。デフォルトと違う部分だけをまとめると、リンク先の表のようになります。

MySQL Variables

設定ファイルmy.cnfを適当なもので置き換えて使えばいいのですが、そのままだとはまるので、回避法を書いておきます。2点あります。

  • InnoDBログファイルの消去
  • MySQLの実行ユーザの確認

InnoDBログファイルの消去

InnoDBのログファイルのサイズは設定ファイルごとに違います。その対応をせずにMySQLサーバを再起動すると、InnoDBが使えなくなってしまいます。この問題を回避するために、以下の手順で一度ログファイルを消去してからMySQLサーバを再起動してください。

まず、MySQLに接続し、「SET GLOBAL innodb_fast_shutdown=0;」としてログをテーブルスペースに反映させます。

次に、シェルから以下のコマンドを実行し、ログファイルを消去します。

sudo service mysql stop
sudo chmod 777 /var/lib/mysql
sudo rm /var/lib/mysql/ib_logfile*
sudo chmod 700 /var/lib/mysql

MySQLの実行ユーザの確認

用意されている設定ファイルには、デフォルトのものを除いて、MySQLデーモンの実行ユーザが記載されておらず、そのままではデーモンを起動させられません。この問題を回避するために、使いたい設定ファイルをもとからあるmy.cnfと置き換えてから、設定ファイルの「[mysqld]」の下に、以下のようにユーザを記載します。

[mysqld]
user = mysql

sudo service mysql start」(あるいは「start mysql」)としてMySQLを起動してからMySQLに接続し、「show engines;」とした結果にInnoDBが含まれていれば成功です。