私はまだmysqlの初心者です。この質問は、オプション -log-slave-updates を使用してスレーブをマスターに昇格させることに関するものです。
スレーブをマスターに昇格させる一般的なスキーマは、 15.3.6フェイルオーバー中のマスターの切り替え で説明されています。ここであなたはそれを行う方法の非常に厳しいステップを見つけることができます:
--log-binオプションを使用し、-log-slave-updatesを使用せずにスレーブを実行します。 --log-slave-updatesなしでスレーブを実行する理由は、スレーブの1つが新しいマスターになる場合にスレーブが更新を2回受信しないようにするためです。
次のようなスキーマがあるとします(画像は 15.3.5。レプリケーションパフォーマンスの向上 から取得されました)。
ここで、Master 2は実際には -log-slave-updates が有効にされ、bin-logが有効になっているスレーブです。 Master 1のbin-logをMaster 2のbin-logに保存してすべてのスレーブに転送するには、-log-slave-updateを有効にする必要があります。 。フェイルオーバーの場合、私はMaster 2をMaster 1の役割に昇格させる必要があります。しかし、私が--log-slave-updatesを有効にした標準のMySqlフェイルオーバースキーマに矛盾があるため、問題が発生する可能性があります。
あなたの意見では。これを行うために私が取るべき行動は何ですか?
--log-slave-updates
に関する警告は、複数の中間「マスター/スレーブ」サーバーがある場合にのみ適用されます。
警告はこれです(私の強調):
次に、マスターから受け取った更新を独自のバイナリログに書き込みます。 スレーブ2がマスターからスレーブ1に変更されると、スレーブ1から既にマスターから受信した更新を受信する場合があります。
しかし、あなたのシナリオでは、Slave 2
はマスターを変更していません。それでも、以前と同じMaster 2
サーバーを指します。
したがって、Master 1
が失敗した場合は、次の2つのことを行う必要があります。
Master 2
を指していることを確認してくださいMaster 2
--log-slave-updates
でMaster 2
を必ず有効にしてください