1 つのマスター サーバーと複数のスレーブ サーバーで MySQL セットアップを使用する予定です。スレーブ サーバーの 1 つでデータ EBS の定期的な一貫性のあるバックアップを実行します (常にデータベースを停止し、完了したら再起動します)。
スレーブのフェイルオーバー
スレーブの 1 つに障害が発生した場合、新しいインスタンスを開始し、最新のスレーブ スナップショットに基づいて EBS を新しいデータ ディスクとしてマウントします。この状況では、マスターはいつでも使用できます。だから、これは私がすべきだと思うことです:
0) サーバーが一意の server_id を使用していることを確認する 1) SLAVE STOP;
2) スレーブをリセットします。
3) スレーブを開始します。
4) mysql を再起動しますか?
それで十分?
マスターのフェイルオーバー 単純さと一貫性の理由から、スレーブの 1 つをマスターに昇格させたくありません。新しいマスターをゼロから作成することを好みます。問題は、スナップショットがスレーブからのものであり、それをマスターとして使用したいということです。これは、スレーブ スナップショットに基づいてディスクを使用して新しいインスタンスを作成した後に行うべきだと思うことです。
1) スレーブを停止します。
2) マスターをリセットします。
3) mysql を再起動
します。4) エラスティック IP を新しいマスター db に関連付けます (失敗したマスターが同じ IP を使用しました)。これにより、スレーブは再び接続できるようになります。
この手順は正しいですか?奴隷は今どうすればいいの?マスターは数時間前のスナップショットから復元されたため、スレーブはマスターよりも先に動作する可能性があります。これは問題ですか?マスターの回復に使用された同じスナップショットからすべてのスレーブを再作成する可能性もあります。それから彼らはマスターと同じ位置にいるでしょう. しかし、これは複雑であり、ダウンタイムなしで進めることは不可能です。それを行うより良い方法はありますか?
事前にどうもありがとうございました!
注: 最新のスナップショット以降のトランザクションの損失は気にしません。Mysql 5.1.41 を使用しています。