====== 03 InnoDBテーブル分割 ======
InnoDB のデータファイルは,MyISAM テーブルと異なって,デフォルトでは ibdata1 というファイルにデータが蓄積されていくとこになります。\\
この ibdata1 は,大量のデータを追加していくと,自動的にサイズを拡張していきます。\\
ただし,データが削除されても自動的には縮小されません。
MySQLのクエリ処理した際とかにどんどんたまっていくようです。\\
INSERTやUPDATE、DELETE等ですね!
[[http://opendatabaselife.blogspot.jp/2009/10/myisaminnodb.html|MyISAMとInnoDBの違い]]
====== テーブル分割 ======
===== ダンプ =====
# mysqldump -u root -p --no-autocommit --all-databases > all_backup.sql
===== MySQL 停止 =====
# /etc/init.d/mysql stop
===== my.cnf修正 =====
# vi /etc/my.cnf
[mysqld]
default-storage-engine=InnoDB
innodb_file_per_table
skip-innodb-doublewrite # リストアが早くなる
==== skip-innodb-doublewrite について ====
InnoDBは、耐障害性を高めるためにInnoDBデータファイル内で2箇所への書き込みを行なうという実装になっています。\\
すなわち「SHOW VARIABLES LIKE 'innodb_doublewrite'」で、innodb_doublewriteがONになっています。\\
ただ、実際にはInnoDBログファイルやバイナリログから復旧可能なため、必ずしも設定が必要なわけではありません。\\
そこで二重書き込みをやめるために、初期設定ふぁいるに「skip-innodb-doublewrite」を加えることで、innodb_doublewriteの値をOFFにできます。\\
これで、データファイルへの書き込み量を削減できます。これはMySQL5.0以降の機能です。
===== 現在のデータファイル削除 =====
# rm -rf /var/lib/mysql/ib*
===== MySQL起動 =====
# /etc/init.d/mysql start
===== リストア =====
# mysql < all_backup.sql
これで、tablename.idb ができるようになります。