- 新しい順
- 投票が多い順
- コメントが多い順
シャットダウンした状態
シャットダウンした状態というのはインスタンスを停止しているという想定でよいでしょうか?
その場合は、リードレプリカのみ停止させるといったことはまずできません。(クラスターごと停止が必要です)
また、インスタンスが一台の場合はフェイルオーバーしようとするとエラーになります。(手動で試してみたところ以下のエラーが発生しました。おそらく自動であっても同じようにフェイルオーバーできないのではないかと思います)
Database cluster:database-1 should have at least two database instances for failover.
リードレプリカが1台も無くプライマリインスタンス1台のみのクラスターの場合は障害が発生すると同じAZ内にプライマリインスタンスを作成する動きとなります。
つまり、フェイルオーバーが行われるというよりも新しいインスタンスを再作成するようなイメージです。
https://docs.aws.amazon.com/ja_jp/AmazonRDS/latest/AuroraUserGuide/Concepts.AuroraHighAvailability.html#Aurora.Managing.FaultTolerance
DB クラスターに Aurora レプリカが含まれていない場合、障害イベントの発生時にプライマリインスタンスが同じ AZ に再作成されます。障害イベントによって中断が発生し、その間例外によって読み取りと書き込みオペレーションが失敗します。新しいプライマリインスタンスが再作成されると、サービスが回復します。これは、通常は 10 分未満で行われます。Aurora レプリカのプライマリインスタンスへの昇格は、新しいプライマリインスタンスの作成よりもはるかに短時間で実行されます。
Amazon Aurora PostgreSQLのフェイルオーバー機能は、高可用性を確保するために設計されています。プライマリインスタンスとリードレプリカインスタンスの2台構成の場合、通常はリードレプリカがフェイルオーバー先として機能します。
しかし、リードレプリカがシャットダウンされている状態でフェイルオーバーが発生した場合、状況は少し複雑になります:
-
Aurora PostgreSQLは、クラスター内で利用可能なインスタンスを自動的に検出します。
-
リードレプリカがシャットダウンされている場合、そのインスタンスはフェイルオーバーの対象として考慮されません。
-
フェイルオーバーが必要な状況で、利用可能なリードレプリカが存在しない場合、Auroraは新しいプライマリインスタンスを作成しようとします。
-
ただし、この過程でダウンタイムが発生する可能性があり、新しいインスタンスが作成され、データが同期されるまでに時間がかかる場合があります。
したがって、リードレプリカがシャットダウンされている状態でフェイルオーバーが発生した場合、技術的には「フェイルオーバー」は可能ですが、可用性とパフォーマンスに影響を与える可能性があります。
最適な高可用性を確保するためには、少なくとも1つのリードレプリカを常に稼働させておくことが推奨されます。また、複数のアベイラビリティーゾーンにわたってインスタンスを配置することで、さらに堅牢なフェイルオーバー構成を実現できます。
Sources
Relational Database – Amazon Aurora MySQL PostgreSQL Features – AWS
Working with Amazon Aurora PostgreSQL - Amazon Aurora
回答済み 2年前
