MySQL のストレージエンジン「InnoDB」は、デフォルトでは「ibdata1」というファイルにデータを保存・蓄積しています。この「ibdata1」」は一度肥大化すると縮小させることはできないため、ディスクフルの要因につながりかねません。メンテナンス方法を記します。(2016/01/20作成)
suju / Pixabay
0.環境
$ mysql --version mysql Ver 14.14 Distrib 5.1.73, for redhat-linux-gnu (x86_64) using readline 5.1 $ pwd /var/lib/mysql $ ls -alh ib* -rw-rw---- 1 mysql mysql 128M 1月 20 20:13 2016 ib_logfile0 -rw-rw---- 1 mysql mysql 128M 1月 20 19:53 2016 ib_logfile1 -rw-rw---- 1 mysql mysql 30G 1月 20 20:10 2016 ibdata1
1.MySQLに関連するサービスを停止
$ sudo /etc/init.d/httpd stop
2.MySQLのDBバックアップを行う
$ mysqldump -u root -x --all-databases --events > all_db.sql
参考エラー -- Warning: Skipping the data of table mysql.event. Specify the --events option explicitly.
MySQL バージョン 5.1.8以降、mysqldump コマンドに対して「–all-databases」のオプションを付与している場合「–events」 のオプションを追加する必要があります。これは、バージョン5.1.8から mysqlデータベースに eventsテーブルが追加されたことが原因です。
3.「ib*」をrenameする
$ sudo /etc/init.d/mysqld stop $ pwd /var/lib/mysql $ ls -lh ib* -rw-rw---- 1 mysql mysql 128M 1月 20 21:39 2016 ib_logfile0 -rw-rw---- 1 mysql mysql 128M 1月 20 19:53 2016 ib_logfile1 -rw-rw---- 1 mysql mysql 30G 1月 20 21:47 2016 ibdata1 $ sudo mv ibdata1 __ibdata1 $ sudo mv ib_logfile0 __ib_logfile0 $ sudo mv ib_logfile1 __ib_logfile1 $ sudo /etc/init.d/mysqld start
※注意※ この時点で MySQLが起動しない場合は、直前の手順で変更した「ib*」を「/var/lib/mysql/」に戻してください。
4.MySQLのDBをリストアする
$ sudo mysql -u root < all_db.sql
以上