CentOS 6.7:MySQL ibdata1 肥大化件の対策

MySQL のストレージエンジン「InnoDB」は、デフォルトでは「ibdata1」というファイルにデータを保存・蓄積しています。この「ibdata1」」は一度肥大化すると縮小させることはできないため、ディスクフルの要因につながりかねません。メンテナンス方法を記します。(2016/01/20作成)

Bloating 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

以上


About yoshimasa

埼玉県さいたま市在住、2男3女のパパです。Linux系の技術情報を中心にまとめています。1978年2月生まれ。