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

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

Bloating suju / Pixabay

0.環境

[crayon]
$ 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
[/crayon]

1.MySQLに関連するサービスを停止

[crayon]
$ sudo /etc/init.d/httpd stop
[/crayon]

2.MySQLのDBバックアップを行う

[crayon]
$ mysqldump -u root -x –all-databases –events > all_db.sql
[/crayon]

[crayon]
参考エラー
— Warning: Skipping the data of table mysql.event. Specify the –events option explicitly.
[/crayon]

MySQL バージョン 5.1.8以降、mysqldump コマンドに対して「–all-databases」のオプションを付与している場合「–events」 のオプションを追加する必要があります。これは、バージョン5.1.8から mysqlデータベースに eventsテーブルが追加されたことが原因です。

3.「ib*」をrenameする

[crayon]
$ 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
[/crayon]

※注意※ この時点で MySQLが起動しない場合は、直前の手順で変更した「ib*」を「/var/lib/mysql/」に戻してください。

4.MySQLのDBをリストアする

[crayon]
$ sudo mysql -u root < all_db.sql [/crayon] 以上 [amazonjs asin="B0071I1SHI" locale="JP" title="ファイナルデータ10plus 特別復元版 ダウンロード"]

About yoshimasa

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

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください