これまでちょこちょことXtraBackupについて紹介してきましたが、MyISAMなども一緒に取得する必要があるため結局利用するのはinnobackupexになります。で、そのinnobackupexをどう使うかという説明はすっ飛ばして、実際にどのような方法でバックアップ/リストアしているかを紹介したいと思います。
が、要は私が書いて実際に利用しているスクリプトを公開するだけの質素な内容になります。
はじめにおことわり
概要
バージョンについて
XtraBackupのバージョンは2系の最新を利用してください。結構頻繁にバグフィックスされているので、こまめにチェックすることをオススメします。
それと pbzip2 を使えるようにしておくと速度面が劇的に向上します。
バックアップ
スクリプトを実行すると、指定のディレクトリにバックアップファイルと最新ファイルへのシンボリックリンクが出来上がります。古いファイルは指定日数が過ぎていて、かつ設定のfind条件に当てはまらないものは削除されます。ファイル形式は指定しなければ、最も速度と圧縮率の効率が良いと思われる .xbstream.bz2 になります。バックアップファイルの他サーバへの転送は記述していませんので、各々の方法を最後に追記するなり、もう1枚スクリプトをかませるなりで対応をお願いします。
リストア
バックアップファイルとデータディレクトリを指定して実行すると、リストアされてmysqldが開始します。tmpディレクトリとログディレクトリは新規に作成されるので、そこを利用する場合はmy.cnfも合わせておく必要があります。レプリケーションをする場合は、接続情報を指定することで自動的に開始します。
既にリストア実行済みの場合は途中で中止します。これはロックを解除することで再実行可能です。この機能は主に、自動的にSLAVEサーバを作成させる場合に重複実行を避けるためにつけました。また、既にレプリケーションが動いているMySQLがある場合も中止します。
その他細かい機能をつけてありますので、詳しくはスクリプト内コメントを参照してください。
スクリプト
バックアップ
リストア
この2スクリプトを、自動フェイルオーバー+自動SLAVE作成 の仕組みにも利用しています。その第3のスクリプトは環境依存の部分があるので公開はしませんが・・・
内容にボロはまだあると思いますが、XtraBackupを使い始めて2年くらい、少しずつ改良してずっと使い続けているので、性能と信頼度はそれなりに良いと思います。差分には対応してませんが、中規模程度までなら便利に使える・・・はずです。
新規にXtraBackupを利用する方や、コードの一部分でも役に立ててもらえれば幸いです。