MyDumperのバージョンを0.5系から、0.6系に変えてもダメ、
ulimitコマンドで、色んな値を変えてみたけどダメ。
ちょっと、自分の手が出せる範囲の問題じゃないと諦めて、
以前検討していた、xtrabackupへと切替えました。
その環境構築。
まずはyumからインストールするためにリポジトリの追加。
# rpm -Uhv http://www.percona.com/downloads/percona-release/percona-release-0.0-1.x86_64.rpm
# yum list | grep xtrabackup
# yum install percona-xtrabackup.x86_64
インストールはすごく簡単。
--バックアップ
# /usr/bin/innobackupex --user root --password XXX /backup_path
※当初--compressを付けて圧縮してたけど、リストア時に解凍が遅い。。。で、ひとまず圧縮なしで運用することにした。
ここで、Too many open filesが出た。MyDumperが動かなくなった原因も此の辺なんだろうな。
ということで、
# ulimit -n 2048
で、open filesをあげるとxtrabackupはうまく動いた。
-- リストア
まずは、Mysqlをストップしてデータディレクトリを退避して、空のデータディレクトリを作る。
# mv /var/lib/mysql /var/lib/mysql.141229
# mkdir /var/lib/mysql
# innobackupex --user root --password XXX --apply-log /backup_path
# innobackupex --copy-back /backup_path
(※--apply-logしないと、ログを適用しないと一貫性あるバックアップデータにならず、
[Warning] InnoDB: Cannot open table XXX_db/XXX_table from the internal data dictionary of InnoDB though the .frm file for the table exists. See http://dev.mysql.com/doc/refman/5.6/en/innodb-troubleshooting.html for how you can resolve the problem.
とか言われて、テーブル開けません。これでずいぶんとハマりました。)
あんまりオプションないけど、xtrabackupは基本的にmy.cnfの設定で動作する。
今回だと、ディレクトリは、/var/lib/mysqlなので、そこに勝手にデータコピーする。
データのコピーが終わったら、所有者をmysqlユーザーに変更して、起動。
# chown -R mysql:mysql /var/lib/mysql
# /etc/init.d/mysqld start
これでうまく起動すればバックアップ&リストア終了。
今まで論理バックアップでの運用だったから、物理バックアップでの運用も少しづつ決めていかないとな。。。
【関連する記事】