Percona XtrabackupでMySQLデータベースのバックアップ

こんにちは、mi2yo4です。

新年が明けてからめっきり寒くなりました。12月までは「今年の冬もそれ程大した寒さじゃないな!」
などと余裕を見せていたのですが、最近の寒さは身に堪えます…

さて、今日は私の新年1回めのエントリとなります。
最近本腰を入れて勉強を進めているMySQLのバックアップ、これについて書いてみようかと思います。

pxb-logo

データベースのバックアップ

データベースのバックアップについてはネット上でも色々な書き込みがありますね。
MySQLも世に出てから…何年だっけ?
(Wikipedia情報によると、初版は1995年だそうです)

なので、バックアップなどのノウハウも溜まりに溜まっています。
今回はその上澄みだけ頂くような形で恐縮なんですが、Percona Xtrabackupを使ってのバックアップ・リストアを試してみます。

Percona Xtrabackupとは

Percona社 が開発しているオープンソースのMySQLのバックアップツール、それがPercona Xtrabackupです。
MySQLでのバックアップは標準のmysqldumpなどを使った方法もありますが、xtrabackupを使った方が往々にして楽・リストアに掛かる時間が短い、との事です。
なので今回は迷わずこのツールを使ってみましょう!

インストール

(今更ながら)CentOS6環境でのインストールを試みます。

# yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

# yum list | grep percona
...
percona-xtrabackup.x86_64                2.3.6-1.el6              percona-release-x86_64
percona-xtrabackup-20.x86_64             2.0.8-587.rhel6          percona-release-x86_64
percona-xtrabackup-20-debuginfo.x86_64   2.0.8-587.rhel6          percona-release-x86_64
percona-xtrabackup-20-test.x86_64        2.0.8-587.rhel6          percona-release-x86_64
percona-xtrabackup-21.x86_64             2.1.9-746.rhel6          percona-release-x86_64
percona-xtrabackup-21-debuginfo.x86_64   2.1.9-746.rhel6          percona-release-x86_64
percona-xtrabackup-22.x86_64             2.2.13-1.el6             percona-release-x86_64
percona-xtrabackup-22-debuginfo.x86_64   2.2.13-1.el6             percona-release-x86_64
percona-xtrabackup-24.x86_64             2.4.5-1.el6              percona-release-x86_64
percona-xtrabackup-24-debuginfo.x86_64   2.4.5-1.el6              percona-release-x86_64
percona-xtrabackup-debuginfo.x86_64      2.3.6-1.el6              percona-release-x86_64
percona-xtrabackup-test.x86_64           2.3.6-1.el6              percona-release-x86_64
percona-xtrabackup-test-21.x86_64        2.1.9-746.rhel6          percona-release-x86_64
percona-xtrabackup-test-22.x86_64        2.2.13-1.el6             percona-release-x86_64
percona-xtrabackup-test-24.x86_64        2.4.5-1.el6              percona-release-x86_64
percona-zabbix-templates.noarch          1.1.7-2                  percona-release-x86_64
pmm-client.x86_64                        1.0.7-1                  percona-release-x86_64
...

# yum install percona-xtrabackup-20

# which innobackupex
/usr/bin/innobackupex

バックアップ

ついでに所要時間も測りつつバックアップしてみます。

# time innobackupex --user (username) --password (password) /user/work/ --no-lock

/user/workフォルダにバックアップ内容が記録されます。
7Gぐらいのデータを使ってみましたが、4分少しでバックアップが終了しました。

リストア

続いて今作成したバックアップデータからリストアを試してみます。

# /etc/init.d/mysqld stop
# mv /var/lib/mysql /var/lib/mysql.orig
# mkdir /var/lib/mysql

mysqlを止めて、データディレクトリを退避させました。
そして新たなデータディレクトリを作成します。

いよいよリストアです。

# innobackupex --copy-back /user/work/yyyy-mm-dd_hh-mm-ss

こちらもズラズラ~っとコンソールに経過が表示されていきますが、最終的にリストア完了の文字が出ればOK。
数分程度で終了しました。データ量を考えると早いのではないでしょうか。

# chown -R mysql:mysql /var/lib/mysql
# /etc/init.d/mysqld start

最後にデータディレクトリをmysqlユーザーに変更して、MySQLサービスを再起動します。

お疲れ様でした!

最後に

食わず嫌いで(何となく)バックアップという作業を避けてきました。
が、コレぐらい簡単であればもっとこのツールを活用してサービスの改善に繋げていきたいですね。

それではまた!