====== 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 ができるようになります。