私は、マスター/マスター レプリケーションで MySQL を実行している 2 台のマシンを備えたシステムを使用しています。
システムを、マスター/マスター レプリケーションも実行している新しいマシンに移動したいと考えています。古いクラスターから 1 つのノードを削除して新しいノードに置き換え、最初の新しいノードから 2 番目のノードへの新しいレプリケーションを作成せずに、これを行うことは可能ですか?
アクティブでマスター/マスターを実行している 2 つのノード node1 と node2 があるとします。ダウンタイムをあまりかけずに、クラスターを new1 および new2 という新しいノードに「魔法のように」移動するにはどうすればよいですか。
答え1
M1 <=> M2 があり、最終的には新しいハードウェア M3 <=> M4 にしたいと考えています。
- (短時間の中断) すべてのクライアント (ライターとリーダー) を M2 に移動します。
- M1 をダウンさせてクローンを作成し、次のトポロジで M3 を作成します: M1 <=> M2 -> M3。(M3 は M2 のスレーブにすぎません。)
- M3 から M4 を構築します: M1 <=> M2 -> M3 -> M4。(M3 はまだ使用されていないため、中断はありません。)
- (短時間の中断) すべてのクライアントを M1 と M2 から移動して、M3 を指すようにします。このプロセスでは、すべてのレプリケーションが少なくとも M3 に到達していることを確認します。
- M1 と M2 を破棄します。これで、M3 -> M4 のみになります。
- (短時間の中断) デュアルマスター (M3 <=> M4) を設定し、必要に応じてクライアントを再配置します。
3 つの中断はそれぞれ、マスターの停止による障害に相当することに注意してください。
デュアル マスターを使用する場合の一般的な推奨事項: 2 つのサーバーのうち 1 つにのみ書き込み、もう 1 つをバックアップおよび読み取りスケーリングとして使用します。
さらに良いのは、自動フェイルオーバーなどを実現するために、Galera Cluster(またはInnoDB Cluster)に切り替えることです。これにより、将来のトポロジ変更がさらに容易になります。このような移行は、似ている今説明した内容に当てはまります。