2006年4月 3日

[mysql 12908] バイナリログからのデータの復旧

橋本です。
いつも、お世話になっております。

バイナリログからのデータの復旧に関して質問です。
バイナリログから、データを復旧する場合、レプリケーションの
Exec_Master_Log_Posを利用して、途中から適用するできますでしょうか?


今、DBのバックアップを取る仕組みを構築しています。

誤ってデータを消してしまったなどの障害が起きた場合に、
一日に一度とってある、mysqldumpしたファイルを、mysqlに流し込む
形で、復旧するところまではできています。

これに加えて、さらに、バックアップをとった後に走ったクエリからも、
データを復旧したいと思っているのですが、そこで詰まっています。
アドバイスをいただけるとありがたいです。


バックアップは、以下の手順を自動化して、とっています。

1.レプリケーションのスレーブを、STOP SLAVEする。
2.FLUSH TABLESする
3.relay-log.info の、Master_Log_Fileと、Exec_Master_Log_Posを保存する
4.mysqldumpで、バックアップを取る。
5.レプリケーションを再開する。

これで、データを消してしまった場合などには、このダンプファイルの時点の
データまでは復元できます。
ダンプファイルの時点まで復元した後、バイナリログからも復元したいのですが、
その場合は、ダンプファイルを取った時点よりも後のものだけを適用したいのです。

mysqlbinlogには、positionという引数があるようなのですが、これは、
バイナリログ内での場所であって、レプリケーションのExec_Master_Log_Posとは
別のもののようです。


こういう場合は、皆さんはどうしていらっしゃるのでしょうか?

・Exec_Master_Log_Posをもとにmysqlbinlogを使用する方法がある?
・バックアップを取るときに、マスターを一度とめて、その時点でのバイナリログの場所を、
 なんらかの方法で記録する?
・バックアップを取るときに、バイナリログのファイルを新しいものにする方法がある?

などのことを考え、調べたのですが、結局見つかりませんでした。

よろしくお願いいたします。

投稿者 xml-rpc : 2006年4月 3日 16:42
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/34365
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。