次のシナリオがあります。
スレーブのセットはマスターから複製され、別個のスタンバイマスター(別名、binlogを持つスレーブ)は同じマスターから複製されます。 pt-slave-delay
を搭載したラグスレーブは、同じソースから複製します。
また、必要に応じてスレーブを1つのマスターから別のマスターに切り替えるために mha4mysql を利用します。
ラグ奴隷がいなければ、すべてがダンディだろう。
問題
ラグスレーブがマスターより12時間遅れて実行されているとしましょう。フェイルオーバーがすぐに発生し(つまり、通常のスレーブと同じ時間にラグスレーブでCHANGE MASTER
が実行される)、ラグスレーブが12時間遅れ続けるように、ラグスレーブをマスターからスタンバイマスターに切り替えます。
問題
スレーブが自身のリレーログでマスターbinlogの位置を追跡していることは知っていますが、マスターの位置は過去12時間まで計算できますが、それを理解している限り、スタンバイマスター(binlogを持つスレーブ)は自身とは関係がありません。リレーログと独自のbinlog。
質問
切り替えて(明らかにラグスレーブの残りのリレーログを破棄し)、12時間遅れてから新しいマスターでレプリケーションを再開する必要があるスタンバイマスターの位置を計算する信頼できる方法はありますか?
[〜#〜] note [〜#〜]MySQL 5.1を実行しているため、5.5(またはGTIDの場合は5.6)は今のところ解決策ではありません残念ながら。
ありがとうございました。
免責事項:mha4mysql
のユーザーではありません。
ラグスレーブをスタンバイサーバーから切り離します。どうやって?
SHOW MASTER STATUS;
を実行しますStep 02
からのbinlogに対してmysqlbinlogを実行しますSTOP SLAVE;
CHANGE MASTER TO MASTER_Host='...',MASTER_LOG_FILE='...',MASTER_LOG_POS=...;
START SLAVE;
すべての手動手順。申し訳ありません。
いずれかのスレーブの下にラグスレーブを永続的にセットアップします。ラグスレーブをマスター間で移動することを心配する必要はもうありません。
ブラックホールスレーブの下にラグスレーブをセットアップします。ラグスレーブをマスター間で移動することを心配する必要はもうありません。
これらの提案がお役に立てば幸いです。少なくともあなたに考えさせていただければ幸いです。