7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

マイネットAdvent Calendar 2016

Day 8

innobackupexについてざっくり

Posted at

マイネットエンターテイメント Advent Calendar8日目の記事です。

主にiOS, AndroidやUnityなどを担当していますが、かくかくしかじかで2サーバ間のDB移行を実施することがありました。
そこで今回はDB移行ツールでお世話になったinnobackupex(xtrabackup)についてお話します。

DBのバックアップについて

DB移行方法として、mysqldumpを利用することが考えられます。
mysqldumpでバックアップ作成を行うとなると事前確認として、DBをロックした後、logのポジションを確認し、dumpファイルを吐き出し....。そして移行先のDBでリストアを実行するとどえらい時間がかかる...なんてこともあります。急いでる身としては操作ミスするかもしれないし、そんな悠長に待ってられないヨ〜というセッカチな方は、以下に記すinnobackupexを利用すると救われることがあるかもしれません。
ここでは以下の手順について記していきます。

  • 移行元DBサーバよりフルバックアップ作成
  • 移行元DBサーバから移行先DBサーバへバックアップデータをコピー
  • 移行先DBサーバにてリストア

innboackupexとは

これはxtrabackupのperlラッパースクリプトで、バイナリタイプのバックアップツールです。
mysqldumpとは違い、ざっくり言うとdatadir/var/lib/mysql以下のデータをいい感じでバックアップデータを作成・リストアしてくれるツールです。

インストール

ここではRHEL系のインストール方法を記します。

RHEL5
$ wget http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm
$ rpm -ivH percona-release-0.1-3.noarch.rpm
RHEL6
$ yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noarch.rpm

以下共通です。

yum list | grep percona
yum install percona-xtrabackup-24

実作業

バックアップ作成 & 移動

移行元サーバにてバックアップ作成と、移行先への移動を一気に行います。1 2

移行元サーバ
# time innobackupex --user=<mysqluser> --stream=xbstream --compress --no-timestamp /tmp/backup \
| ssh user@otherhost "xbstream -x -C /path/to/backupdir/"

解凍

qpressが必要になりますので、未インストールである場合は導入してください。

移行先サーバ
# yum install -y qpress
# time innobackupex --decompress /path/to/backupdir

ログ適用

Write Ahead Logを適用します。

移行先サーバ
# time innobackupex --apply-log /path/to/backupdir

これにてバックアップ先のディレクトリ内にxtrabackup_binlog_infoが作成されます。
スレーブ設定する場合はログポジションにこれを利用してください。

データ移行

以下の操作は、前もってmysqlを停止しておいてください
事前に移行先サーバのdatadir内を一度削除するか、バックアップをとります。

移行先サーバ
# cp -R /var/lib/mysql /path/to/mysql_backupdir
or
# rm -rf /var/lib/mysql/*

以下のコマンドを実行することで、datadirに対してバックアップデータのコピーが行われます。

移行先サーバ
# time innobackupex --copy-back /path/to/backupdir

移行完了後の作業

copy-backupが完了したのち、datadirの所有権を修正します。

移行先サーバ
# chown -R mysql: /var/lib/mysql

以上で完了です。mysqldを起動し、DB移行が完了しているか確認してみましょう。

まとめ

以上の説明はかなりざっくりしたものになります。innobackupexを用いたバックアップ手法は幾つか方法もありますし、現在では外部mysqlからAWSのAuroraへ移すのにもinnobackupexの利用が推奨されています。(DMSでも良いと思います)
ニーズに合わせて適切な利用を心がけるといいと思います。

参考

  1. 移行先サーバにてinnobackupexの導入が完了していることが前提です。

  2. なんやかんやで時間がかかるので、バックグランドか、screen上で実行するのが吉です。

7
7
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
7
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?