web-dev-qa-db-ja.com

MySQLレプリケーションを使用して2つのPerconaXtradbクラスター間でデータを複製する

現在、単一のデータセンターで実行されている3ノードのPerconaXtradbクラスターがあります。災害時のフォールトトレランスを追加して、単一のデータセンターへの依存を防ぎ、Perconaデータを2番目のデータセンターと同期して、そのような場合に新しい同期されたクラスターに接続するようにアプリを簡単に切り替えることができるようにします。イベント。

多くのデータセンターにマスターノードを追加するだけでよいことは承知していますが、別の場所にあるデータセンターの往復書き込み時間の増加を犠牲にすることはできません。代わりに、MySQLレプリケーションでこれを行うことが可能かどうか疑問に思いました。私の考えは、次のように設定することです。

3ノードのメインPerconaクラスター-> MySQLレプリカDB-> 3ノードのセカンダリPerconaクラスター

レプリカにわずかな遅延があり、データが数秒で同期しなくなる可能性があることはわかっていますが、これは私たちが喜んで行うトレードオフです。このような設定では、スイッチを押すだけでクラスターを簡単に切り替えることができます。

いくつかの質問を聞きたいんです:

  1. これは悪い考えですか?個人的には大きな欠点はありませんが、何か足りないのでしょうか?
  2. MySQLスレーブレプリカが(メインPerconaクラスターから)データを受信し、(セカンダリPerconaクラスターに)データを書き込むことは可能ですか?
  3. メインのPerconaクラスターがダウンし、セカンダリのPerconaクラスターの使用/書き込みを開始するとどうなりますか?メインのPerconaクラスターが戻ってきたときに、セカンダリのPerconaクラスターからの新しいデータと簡単に同期するにはどうすればよいですか?単純に(一時的に)6ノードクラスターを作成すれば、Perconaがその作業を実行できますか?

私はこれについて多くの質問を知っていますが、あなたの助けに感謝します!

1
user209180

クラスター-> MySQL->クラスターは機能します。私自身は試していませんが、数か月前からCluster-> ClusterがSoon™のオプションになることを知っているので、中間のステップをスキップできるかもしれません。 PXCのPoVから、マシンの1つから自分を奴隷にし、他のマシンは自分自身を自分に奴隷にします。あなたはデータを受信して​​いるほど「データの受信と書き込みの両方」ではなく、データをあなたから受信できるようにする、その区別が理にかなっている場合。

再同期するには、マスターマスターのように手動で調整したauto_increment_incrementおよびauto_increment_offset各クラスターで。おそらく簡単ですが、最悪の場合、PXCによって選択されたauto_increment_ {increment、offset}を制約することを意味します。これは小さなパッチになります。

ボーナスポイント:最大のレプリケーション速度を得るには、変更します(sql_log_bin=0セッション中!!!)ブラックホールエンジンを使用するための中間データベース上のテーブル。

1
BMDan