LoginSignup
3
3

More than 5 years have passed since last update.

Percona xtrabackupでmroongaをバックアップ・リストア

Last updated at Posted at 2015-10-21

背景

MySQL用groongaプラグイン「mroonga」を使っていると、色々厄介な問題に直面する。たとえば、そのままのPercona xtrabackupではデータベースの保存ができない。

本稿は、xtrabackupをmroongaに対応させた時の記録。

インストール

こちらの神様がmroonga対応パッチを書いてくださっているが、随分前のバージョンなので困ったなぁと思っていた。
探してみると、こちらの仏様がXtrabackupの2.2.11用を提供してくださっている。ありがたや。

2015/10/01現在では、決して2.2.11は最新ではないが、古いというわけでもない。今回は楽しよう。

※ 自分で最新化する場合は、sub backup_filesの中のclosedir(DIR);の前で、mroongaを対象とする記載を入れていけば良いようだ。

xtrabackupのインストール

というわけで、xtrabackupを 2.2.11 でインストールする。

パッケージはここからバージョン指定で入手してインストールする。

$ wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.2.11/binary/redhat/6/x86_64/percona-xtrabackup-2.2.11-1.el6.x86_64.rpm
$ rpm -ivh percona-xtrabackup-2.2.11-1.el6.x86_64.rpm

patch適用

続いて、mroonga patchを手に入れ、innobackupexに適用する。
下記手順でパッチは、(感謝しながら) wgetでホームディレクトリにダウンロードしている。

$ wget http://www.teamgedoh.net/warehouse/innobackupex-mroonga.patch

それでは、適用してみよう。

$ cd /usr/bin/
$ ls -l innobackupex
-rwxr-xr-x 1 root root 187056 May 25 23:02 innobackupex
$ patch -p1 innobackupex < ~/innobackupex-mroonga.patch
# 以下のように出力される
patching file innobackupex

以上で準備OK。

実行

xtrabackupのラッパーツールinnobackupexを使用してバックアップを取得する。
参考: http://buta9999.hatenablog.jp/entry/20131120/1384972041

バックアップ

手順

細かい指定がなくても、自動的にmy.cnfから設定をデータディレクトリの場所を読み込んでくれる。便利。

$ nohup innobackupex --user=root  /var/tmp/test/ > /tmp/nohup.log &

この手順で、/var/tmp/test以下にYYYY-mm-dd_HH-MM-SSという名前でディレクトリが作成され、バックアップが取得される。

実験結果

約15GBのデータ量で5分 ほどで取得が完了した。

リストア

手順

このバックアップされたファイルをそのまま/var/lib/mysqlなどのデータディレクトリに配置しても良いようだが、コマンドでリストアする例を記載する。

まずログの適用をする。最後にcompleted OKとなることを確認する。

$ innobackupex --user=root --apply-log /var/tmp/test/2015-09-29_14-20-02/
### 略
150929 14:50:34  innobackupex: completed OK!

リストアを実行する。
以下のコマンドで 自動的に元のフォルダの位置にリストア してくれる。

$ innobackupex --copy-back /var/tmp/test/2015-09-29_14-20-02

実験結果

先ほどの15GBほどのデータが 3分ほどで完了!

追加手順

innodbのlog_file系のパラメータがバックアップ/リストア時点で異なる場合は、MySQL起動前にib_logfile*を削除する。
また、 ファイルの権限が変わっている可能性が高い ので、以下のようなコマンドで権限を戻しておこう。

$ chown -R mysql:mysql /var/lib/mysql

全て準備出来たらmysqldサービスを起動すればリストア完了。

補足

Slaveを複製する用途で使用するときはオフィシャルドキュメントに詳しく書かれている。

3
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3