MySQLのレプリケーションについての質問になります。
スレーブが直列で2台以上ある場合に、データの不整合等なく、中間にあるスレーブのマスターを変更することができるかという質問になります。
環境
- OS CentOS 6系
- MySQL 5.7系(Community版)
元々の構成
DB1 - DB3は同じネットワーク内にあります。
DB4はネットワーク的に遠隔地にあり、これは必ず最後のスレーブとする必要があります。
以下の図のM,Sは以下の通りです。
[M] マスター
[S] スレーブ
元の構成
| →遠隔地 DB1 - DB2 - DB3 - DB4 [M] [S] [S] | [S] |
DB1がマスターで、DB2からDB4までが直列でレプリケーションになっております。
障害発生時
マスターだったDB1で障害が発生し、アプリケーションの接続先をDB2に変え、DB2をマスターとする事になりました。
障害発生時の対応後の構成
| →遠隔地 DB2 - DB3 - DB4 [M] [S] | [S] |
スレーブを1つ追加
スレーブDBが1台減ってしまったので、新たにDB5を立て、DB2をマスターとしてレプリケーションを開始しました。
| →遠隔地 DB2 - DB3 - DB4 [M] [S] | [S] | | DB5 | [S] |
【ここからが質問】構成を戻すために
障害発生前のスレーブの構成に戻したいと思っております。
- マスターは極力停止したくない
- 1台目のスレーブ以降のサーバについては、1~2時間の停止は問題ない
- しかし、DB内のデータが大きく、mysqldumpを利用してダンプを取得するだけで12時時間程度かかる
- そのためなるべくレプリケーションを崩したくない(全データの再インポートは行いたくない)という状況です。
例えば、DB5がきちんとすべてレプリケーションがとられている状況で、DB3をいったんスレーブを停止し、マスターをDB5に向けることで、継続してレプリケーションされるのであればよいのですが、このようなことはできるのでしょうか。
| →遠隔地 DB2 - DB3 - DB4 [M] [S] | [S] | | DB5 | [S] |
案)DB3のマスターを付け替える ↓
| →遠隔地 DB2 | [M] | | | DB5 - DB3 - DB4 [S] [S] | [S]
あなたの回答
tips
プレビュー