開発しているオープンソースのMySQLのバックアップツールです。XtraDBとMyISAMストレージエンジンをブロックすることなくバックアップをする事が出来ます。ライセンスはGPLv2で無料で使えます。大量のデータを保存しているデータベースからダンプしたデータをリストア(復旧)する時に非常に時間が掛かってしまうという欠点があります。ここでは、mysqldumpとXtraBackupを使ってバックアップを取り、両者のバックアップとリストアのスピードの違いを比較してみます。5.5のインストール検証用のMySQLをyumからインストールします。mysql-devel.x86_64MySQLの設定は単純にinnodb_buffer_pool_sizeとlog-bin=mysql-binを追記しただけです。本気で運用するなら用途に合わせて細かく設定する必要があります。20Glog-bin=mysql-binMySQLをスタート。startパスワードを設定。'password'検証用のMySQLの用意ができました。テスト用データの挿入MySQLベンチマークツールのtpcc-mysqlを使ってテストデータを挿入します。tpcc-mysqlをインストール。-lデータベースの設定をインポート。add_fkey_idx.sqlテストデータを挿入。tpcc_loadにはwarehouse(倉庫)というパラメータで挿入するデータ量を決めます。14m3.526s挿入完了まで3時間ほどかかりました。データベースのサイズを見てみましょう。リストアまず、mysqldumpのダンプ時間を計ってみましょう。0m22.771s8分で出力されました。ファイルサイズは4GB程です。次に、リストアを高速化する設定をします。InnoDBのリストアを高速化my.cnfの設定は以下の通りです。20G#log-bin=mysql-bininnodb_doublewrite=0innodb_flush_log_at_trx_commit=0リストアをスタート。0m8.523s1時間掛かりました。XtraBackupをインストールしようmy.cnfの[mysqld]以下にdatadirの設定を記述します。※バックアップスクリプトのinnobackupexが/etc/my.cnfのdatadir値を参照します。/etc/my.cnfdatadir=/var/lib/mysqlGnuPGが必須になるのでインストール。gpgPerconaのyumレポジトリをインストール。listに入っているかチェック。perconaインストール。xtrabackupインストールされたでしょうか?ヘルプを表示してみましょう。--helpXtraBackupのインストールができました。XtraBackupでMySQLのバックアップバックアップディレクトリ作成。/backup/xtrabackup/バックアップ実行。0m20.164s11分掛かりました。/backup/xtrabackup/の下に日時ディレクトリが作成され、バックアップファイルが設置されます。Log)を適用して、バックアップ終了時点でのデータに更新します。0m0.091s10秒ほどでした。これにてバックアップファイルの完成となります。XtraBackupでMySQLのリストアMySQLをストップして、既存のデータディレクトリを退避。/var/lib/mysqlリストア実行。0m16.493s19秒、早いですね。ディレクトリの権限をmysqlに変更してMySQLをスタート。start初回起動時は時間が掛かってしまって、/etc/init.d/mysqldに設定されているタイムアウト時間120秒を超えて[FAILED]が出ていますが、もう暫く待っていると起動します。今回はテストデータがかなり大きかった為に時間が掛かっていますが、データが少ないともっと早いです。[FAILED]起動ログを確認。Remi5分ほど起動に時間が掛かりました。中身を確認してみましょう。sec)まとめmysqldumpとXtraBackupではバックアップ時間はそれほど変わりませんが、リストア時間に大きな差が出ます。データが少ないうちはmysqldumpでも十分ですが、ある程度データ量が多くなったら万が一の時に備えてXtraBackupによるバックアップも取っておくと良いでしょう。