web-dev-qa-db-ja.com

MySQLレプリケーション:マスターをスレーブと再び同期させる

マスタースレーブレプリケーションのセットアップで、同じネットワーク上に2台のコンピューターがあります。

フェイルオーバーをテストするために、いくつかのデータをスレーブデータベースに直接挿入しました。そのため、スレーブデータベースにはマスターデータベースよりも多くの情報が含まれています。

ここで、マスターをスレーブと再び同期させて、実際のマスタースレーブ設定に戻したいと思います。どうすればいいですか?

4
Deniz Dogan

それらを「マスター」および「スレーブ」と呼ぶ代わりに、次のように概説しましょう。

  • HostA:元の「マスター」
  • HostB:元の「スレーブ」

HostBに直接データを挿入すると、HostAはバイナリoplogに遅れをとっていました。まず、CHANGE MASTER TOコマンドを使用してHostAをHostBのスレーブにすることで、これを克服する必要があります( http://dev.mysql.com/doc/refman/5.0/en/change-master -to.html )。これにより、HostAがHostBと同期するはずです。

HostAがHostBに追いついたら、HostAのバイナリログをリセットしてマスターにプロモートする必要があります。

  1. HostAの場合:RESET MASTER;
  2. HostBの場合:CHANGE MASTER TO.。

詳細については、 http://dev.mysql.com/doc/refman/5.0/en/replication-solutions-switch.html#figure_replication-redundancy-after を参照してください。

3
Charles Hooper

代替ソリューション:

  • SLAVEとMASTERを停止します。
  • Navicat to DataSyncのようなプログラムをSLAVEからMASTERに実行します。
  • スレーブとマスターをリセットします。
  • マスターとスレーブを開始します。

データはうまくいくはずです。

0
John M