私はMySQLのレプリケーションのスキーマを次ていますslaveのリレーログとしてmasterのmysql binlogを使用できますか?
A(マスター) - > B(スレーブ/マスター) - > C(スレーブ)
- Aは、BがAさんを読み込む
- BINLOG書き込みbinlogはrelaylogを適用し、自身のbinlogを書き込みます
- CはBから読み込んで適用します。何らかの理由(A-> B)によって破ら
複製になる場合は、私が最後に実行されたステートメントBに対応している位置を見つけると、それを再生、Aのバイナリログをコピーすることができます。 すべてのレプリケーションチェーンでbin/relayログのトランザクション/ステートメントの順序が同じですか? (それは同じ順序であるかもしれないので、レプリケーションは、1つのスレッドを使用します。)
更新:私はのように求めている必要があります。「すべてのレプリケーション・チェーン全体で同じバイナリログ内の文/トランザクションの順序です、我々はすべてのログを再生することはできますか?スレーブ(c)をマスター(A)に返す " 答えは"はい "と思われます。しかし、公式の確認やドキュメンテーション(ソースコード)のリンクはまだ投稿されていません。
アップデート2:公式ドキュメントからinnodb_support_xaへ:
は、二相のためのInnoDBサポートがトランザクションの準備のための余分なディスクフラッシュを引き起こし、XAトランザクションにコミットできます。 XAメカニズムは内部的に使用され、バイナリログがオンになっていて、複数のスレッドからのデータへの変更を受け入れるすべてのサーバーにとって不可欠です。 innodb_support_xaを無効にすると、ライブデータベースがコミットしているのとは異なる順序でバイナリログにトランザクションを書き込むことができ、ディザスタリカバリまたはレプリケーションスレーブでバイナリログを再生するときに異なるデータを生成する可能性があります。
こんにちは、ザファール。 主な質問は、「レプリケーションチェーンに入っている別のサーバのbinlogを再生できますか? – Tamerlaha
サーバBのレプリケーションが機能していないので、サーバはレプリケーションチェーンに属していません。あなたは私の答えで述べたように、AからCのbinlogを再生することができます。レプリケーションを続行するには、 BがCのデータをBから複製できるようにするか、Aから直接Cの複製を開始する必要がありますが、サーバBのデータを決定する必要があります。 –
すべてのbin/relayログで、ステートメントとトランザクションの順序が同じであることを確実に確認していますか?私はこれについてどこで読むことができますか? – Tamerlaha