mysqldumpを速くする(その3 XtraBackup)

By | 2013年6月13日

nigaraです。やっと本題的な内容。

mysqldumpの代わりにmyXtraBackupを使うと劇的に改善します。

  • まず結論から

5000万レコード(innodb)あるテーブルを擁するDBのリストア時間

mysqldump XtraBackup
real    38m50.467s
user    2m1.653s
sys    0m6.249s
real    5m13.035s
user    0m0.285s
sys    0m29.615s

XtraBackupが圧倒的に速いです。

 

  • CentOS6での導入方法

perconaのレポジトリから入れるとバージョンの問題で動かないので、直接サイトから古いバージョンを取ってきます。

(バージョン違いで実行した際のエラー)

先にGnuPGをインストール

古いバージョンを以下から取ってきてインストール

http://www.percona.com/downloads/XtraBackup/XtraBackup-2.0.7/

RPM→rhel6→64bit→percona-xtrabackup-2.0.7-552.rhel6.x86_64.rpm

(バージョン等は環境に合わせてください)

 

  • バックアップ

引数の最後は出力先ディレクトリです。

  • リストア

データディレクトリが空っぽの必要性があります。

mysqlをパッケージで入れた場合はデフォルトで/var/lib/mysqlとなっています。

mysqlを一旦ストップさせ、該当ディレクトリ内を消したあとに

リストアされたファイルは実行ユーザーでファイルが作成されていますので、

必要に応じてchownで所持ユーザーを変更してください。

mysqlを起動させればリストア完了です。

 

XtraBackupの他にmydumperというのもあるのですが、こちらはマルチスレッドでSQL文を流し込みます。ただデータ量やエンジンによってmydumpより遅くなる場合もあるので、速度優先の場合はXtraBackupがオススメです。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です