2006年4月12日

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

MLのみなさま

お世話になります。酒井と申します。
私も橋本さんと同じような構成でバックアップを取ろうかと思っているのですが、同じようにスレーブでバイナリログが取れなくて困っています。

『実践ハイパフォーマンスMySQL』のレプリケーションの章にはピラミッド型というレプリケーションの形態が載っているのですが、これを見る限りでは、MySQLは一方のサーバーのスレーブかつ他方のサーバーのマスターになれるように見えます。(図の2と3のサーバーです)
http://dev.mysql.com/books/hpmysql-excerpts/ch07.html#hpmysql-CHP-7-SECT-4.2.5

と言うことは2のサーバーでは、1から送られてきたバイナリログを実行し、かつそれを4と5に伝えるために2のサーバー上でバイナリログを記録しておく方法があるように思えるのですが、どうなのでしょうか。

よろしくご教授ください。

--
酒井

On Wed, 5 Apr 2006 16:39:39 +0900, Kenta Hashimoto wrote:
> 橋本です。
>
> ありがとうございます。
> mysqldumpするときに、ログをフラッシュ方法で、解決できそうです。
>
>
> なのですが、、、また、別の問題で詰まってしまっています。
>
> バックアップはスレーブでとるのですが、バックアップを取るときに、
> タイミングを合わせて、マスターのバイナリーログをフラッシュするよりは、
> スレーブ側でバイナリーログをとって、それをフラッシュしたほうが、
> マスターのダウンタイムも発生しませんし、システムがシンプルになります。
>
> そこで、スレーブ側でもバイナリーログをとる設定にしようとし、/etc/my.cnfに、
> log-bin
> という行を加えて、mysqlを再起動したのですが、
> なぜか、スレーブ側でバイナリーログが取れません。
>
> スレーブでバイナリーログをとるには、他に必要な設定があるのでしょうか?
>
> よろしくお願いいたします。
>
> 06/04/04 に Yasufumi Kinoshita さんは
> 書きました:
>> こういうことでしょうか?
>>
>> http://lists.mysql.com/mysql-ja/184
>> (リカバリーの節)
>>
>> 間違っていたらすみません。
>> バージョンによってはオプションの綴りが違うかもしれません。
>> マニュアルでご確認を。
>>
>> Kenta Hashimoto wrote:
>>> 橋本です。
>>> いつも、お世話になっております。
>>>
>>> バイナリログからのデータの復旧に関して質問です。
>>> バイナリログから、データを復旧する場合、レプリケーションの
>>> 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月12日 15:29
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/34757
トラックバック
コメント
コメントする




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