mysqldump -uroot -pxxxxxxxx --single-transaction --master-data=2 --all-databases | gzip > 20150327.sql.gz 2095627 Query FLUSH TABLES WITH READ LOCK 2095627 Query SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ 2095627 Query START TRANSACTION /*!40100 WITH CONSISTENT SNAPSHOT */ 2095627 Query SHOW MASTER STATUS 2095627 Query UNLOCK TABLES上記のような状況を回避して、MySQLマスターをロックせずレプリケーションを構築するためにXtraBackupを利用します。
通常、innobackupexを使ってバックアップをするとロックを発行するのですが、 --no-lockで回避します。
--no-lock オプションを付与すると、binlogのポジションが記述されるはずの xtrabackup_binlog_info ファイルが作成されません。
しかし、--apply-logコマンドでリカバリ用のファイルを作成すると、ログにbinlogのポジションが出力されます。これを利用してレプリケーションを構築できます。
以下、作業ログです。
MySQLマスターサーバ
XtraBackupをインストール
# rpm -Uhv http://www.percona.com/redir/downloads/percona-release/percona-release-0.0-1.x86_64.rpm # yum -y install xtrabackupバックアップディレクトリ作成
# mkdir -p /tmp/xtrabackup/バックアップ実行 --no-lockオプションを付与する
# time innobackupex --user root --password xxxxxxxx /tmp/xtrabackup/ --no-lockフォルダをスレーブサーバへscp(転送制限を5MB/sに設定)
# scp -r -l 40000 /tmp/xtrabackup/2015-03-25_09-31-50 username@100.100.100.100:/tmp/
MySQLスレーブサーバ
XtraBackupをインストール
# rpm -Uhv http://www.percona.com/redir/downloads/percona-release/percona-release-0.0-1.x86_64.rpm # yum -y install xtrabackupMySQLリストア用にデータディレクトリを空にしておく
# /etc/init.d/mysqld stop # mv /var/lib/mysql /var/lib/mysql.old # mkdir /var/lib/mysqlバックアップの準備とポジションの確認
$ innobackupex --apply-log /tmp/2015-03-25_09-31-50 [notice (again)] If you use binary log and don't use any hack of group commit, the binary log position seems to be: InnoDB: Last MySQL binlog file position 0 431897511, file name mysql-bin.000009binlogのポジションは、431897511
binlogファイルは、mysql-bin.000009
リストア実行
$ innobackupex --copy-back /tmp/2015-03-25_09-31-50 $ chown -R mysql:mysql /var/lib/mysql # /etc/init.d/mysqld start
あとは、 先ほど確認したbinlogのポジションを利用して "CHANGE MASTER TO" コマンドでレプリケーションをスタートさせればOKです。
ちゃんと、レプリケーションされているか確認してみてください。
参考資料)
Percona xtrabackup - MySQL Meetup @ Mumbai
http://www.slideshare.net/nilnandan/percona-xtrabackup-mysql-meetup-mumbai/48
Working with Binary Logs — Percona XtraBackup Documentation
http://www.percona.com/doc/percona-xtrabackup/2.1/xtrabackup_bin/working_with_binary_logs.html
漢(オトコ)のコンピュータ道: MySQLバックアップ頂上決戦!! LVMスナップショット vs InnoDB Hot Backup
http://nippondanji.blogspot.jp/2009/12/mysql-lvm-vs-innodb-hot-backup.html