MySQLストレージエンジン変更

MySQLのレプリケーション、トランザクションの機能を試すため、ストレージエンジンをMyISAMからInnoDBへ変更することにしました。
ちなみにMySQL5.5からデフォルトのストレージエンジンはMyISAMからInnoDBに変更されたようです。

1.利用可能なストレージエンジンの確認

mysql> show engines;

+--------------------+---------+
| Engine             | Support |
+--------------------+---------+
| InnoDB             | DEFAULT |
| MRG_MYISAM         | YES     |
| CSV                | YES     |
| BLACKHOLE          | YES     |
| MyISAM             | YES     |
| PERFORMANCE_SCHEMA | YES     |
| ARCHIVE            | YES     |
| MEMORY             | YES     |
| FEDERATED          | NO      |
+--------------------+---------+

バージョンを5.5にアップデートしたのでInnoDBがデフォルトになっています。

2.各テーブルのストレージエンジンを確認

WordPressに使用しているDBの各テーブルを確認してみました。

mysql> show table status from wordpress;

+------------------------+--------+
| Name                   | Engine |
+------------------------+--------+
| wp_commentmeta         | MyISAM |
| wp_comments            | MyISAM |
| wp_ktaisession         | MyISAM |
| wp_links               | MyISAM |
| wp_options             | MyISAM |
| wp_post_views_history  | MyISAM |
| wp_post_views_realtime | MyISAM |
| wp_post_views_summary  | MyISAM |
| wp_postmeta            | MyISAM |
| wp_posts               | MyISAM |
| wp_term_relationships  | MyISAM |
| wp_term_taxonomy       | MyISAM |
| wp_terms               | MyISAM |
| wp_usermeta            | MyISAM |
| wp_users               | MyISAM |
+------------------------+--------+

innoDBを使用するためにはテーブルに設定されているデータベースエンジンも変更してあげる必要がありそうです。

3.my.cnfのパラメータ追加

今回InnoDBを使用するために必要なパラメータをmy.cnfに追加しました。チューニング的なパラメータはまた改めて確認したいと思います。

innodb_data_home_dir
innodb_data_file_path
innodb_log_group_home_dir
log-bin

4.各テーブルのデータベースエンジンをMyISAMからInnoDBへ変更します。

ALTER TABLE <テーブル名> ENGINE=InnoDB;

以下のようにファイルに記述して読み込ませるのが楽です。

# mysql -u root -p < ファイル名.sql
<ファイルの内容>
USE wordpress;
ALTER TABLE wp_commentmeta ENGINE=InnoDB;
ALTER TABLE wp_comments ENGINE=InnoDB;
ALTER TABLE wp_ktaisession ENGINE=InnoDB;
ALTER TABLE wp_links ENGINE=InnoDB;
ALTER TABLE wp_options ENGINE=InnoDB;
ALTER TABLE wp_post_views_history ENGINE=InnoDB;
ALTER TABLE wp_post_views_realtime ENGINE=InnoDB;
ALTER TABLE wp_post_views_summary ENGINE=InnoDB;
ALTER TABLE wp_postmeta ENGINE=InnoDB;
ALTER TABLE wp_posts ENGINE=InnoDB;
ALTER TABLE wp_term_relationships ENGINE=InnoDB;
ALTER TABLE wp_term_taxonomy ENGINE=InnoDB;
ALTER TABLE wp_terms ENGINE=InnoDB;
ALTER TABLE wp_usermeta ENGINE=InnoDB;
ALTER TABLE wp_users ENGINE=InnoDB;

5.ストレージエンジンが変更されたことを確認する

mysql> show table status from wordpress;

+------------------------+--------+
| Name                   | Engine |
+------------------------+--------+
| wp_commentmeta         | InnoDB |
| wp_comments            | InnoDB |
| wp_ktaisession         | InnoDB |
| wp_links               | InnoDB |
| wp_options             | InnoDB |
| wp_post_views_history  | InnoDB |
| wp_post_views_realtime | InnoDB |
| wp_post_views_summary  | InnoDB |
| wp_postmeta            | InnoDB |
| wp_posts               | InnoDB |
| wp_term_relationships  | InnoDB |
| wp_term_taxonomy       | InnoDB |
| wp_terms               | InnoDB |
| wp_usermeta            | InnoDB |
| wp_users               | InnoDB |
+------------------------+--------+

■参考

http://blog.still-laughin.com/archives/2010/02/innodb.html