リカバリ
オンラインバックアップ+バイナリログからリカバリする手順.
1.バックアップデータをリストア
- コマンド MYSQLDUMP で吸い出したデータを流し込む
$ gzip -dc /tmp/backup.dump.gz | mysql
※この作業がバイナリログに書き込まれてしまうため,バイナリログは停止しておくこと
2.バイナリログの内容をリストア
$ mysqlbinlog hoge-bin.00002 | mysql
例:
1.データベース,テーブルを作成する
$ mysql --user=USER --password=PASSWORD mysql> create database hoge; mysql> use hoge; mysql> create table t (id char(1)) type=innodb;
2.データ a の登録
mysql> insert into t values ('a'); mysql> \q
3.オンラインバックアップを行う
$ mysqldump --user=USER --password=PASSWORD --all-databases --single-transaction --master-data=2 --flush-logs --delete-master-logs | gzip > /tmp/backup.dump.gz
4.データ b の登録
$ mysql --user=USER --password=PASSWORD mysql> use hoge; mysql> insert into t values ('b'); mysql> \q
5.MySQL の停止
$ /etc/init.d/mysql.server stop
6.ログが無効な設定ファイルを作成
/etc/my.cnf をコピーして,該当箇所をコメントアウトすればよい.このファイルを MySQL が参照するようにリネームしておくこと.
$ cd /etc
$ cp my.cnf my.cnf.x
$ vi my.cnf #該当箇所のコメントアウト
7.MySQL の起動
$ /etc/init.d/mysql.server start
8.ダンプとバイナリログを投入する
$ gzip -dc /tmp/backup.dump.gz | mysql --user=USER --password=PASSWORD $ cd XXX #バイナリログが保管されているディレクトリ $ mysqlbinlog ... | mysql --user=USER --password=PASSWORD #ディレクトリに保管されているバイナリログを投入する
9.MySQL の停止
$ /etc/init.d/mysql.server stop
10.ログが有効な設定ファイルに戻す
$ cd /etc $ mv my.cnf my.cnf-no-binlog $ mv my.cnf.x my.cnf
11.MySQL の起動
$ /etc/init.d/mysql.server start