RDS では、インスタンスのプライマリノードが障害を起こした場合、または潜在的なリスクを軽減するためにセカンダリノードに緊急修正が適用された場合に、自動的にプライマリ/セカンダリ スイッチオーバーが実行されます。スイッチオーバー中は、プライマリノードとセカンダリノードの役割が入れ替わります。スイッチオーバー後もインスタンスのエンドポイントは変更されず、アプリケーションは自動的に新しいプライマリノード(従来のセカンダリノード)に接続します。このプロセスにより、高可用性が確保されます。また、手動でプライマリ/セカンダリ スイッチオーバーを実行することもできます。
前提条件
対象インスタンスがスタンダードインスタンスの場合、以下のいずれかのインスタンスエディションに属している必要があります:
高可用性シリーズ
RDS Enterprise Edition
Cluster Edition
説明ベーシックシリーズのインスタンスにはセカンダリノードが存在しないため、プライマリ/セカンダリ スイッチオーバーはサポートされていません。
対象インスタンスが読み取り専用インスタンスの場合、高可用性シリーズに属し、クラウドディスクストレージクラスを使用している必要があります。
背景情報
自動切り替え:この機能はデフォルトで有効です。プライマリノードに障害が発生した場合、RDS は自動的にワークロードをセカンダリノードへ切り替えます。「プライマリ/セカンダリ スイッチオーバーのトリガー要因」については、「プライマリ/セカンダリ スイッチオーバーの理由」をご参照ください。
手動スイッチオーバー:自動切り替えが有効であっても、手動でプライマリ/セカンダリ スイッチオーバーを実行できます。ディザスタリカバリ訓練や、マルチ AZ デプロイにおける最寄りのゾーンからの接続など、特定のシナリオで有用です。
高可用性シリーズのインスタンスでは、プライマリノードとセカンダリノード間でデータがリアルタイム同期されます。アプリケーションからアクセス可能なのはプライマリノードのみであり、セカンダリノードはバックアップ専用であり、アプリケーショントラフィックは処理しません。
高可用性シリーズに属する読み取り専用インスタンスでも、プライマリ/セカンダリ データベースのスイッチオーバーがサポートされており、スイッチオーバーログの確認も可能です。
その他のデータベースエンジンにおけるプライマリ/セカンダリ スイッチオーバーについては、以下のトピックをご参照ください:
影響
プライマリ/セカンダリ スイッチオーバーにより、通常 15 秒以内のサービス中断が発生します。アプリケーションには自動再接続メカニズムを備えておく必要があります。
アプリケーションが古いバージョンの Druid コンポーネントをデータベース接続管理に使用している場合、切断後に自動再接続が失敗することがあります。この問題を回避するには、Druid コンポーネントをバージョン 1.1.16 以降にアップグレードしてください。
プライマリインスタンスに読み取り専用インスタンスがアタッチされている場合、スイッチオーバー後に数分間のデータ遅延が発生する可能性があります。これは、RDS がレプリケーションタスクを再構築し、増分データを同期する必要があるためです。
プライマリ/セカンダリ スイッチオーバーではインスタンスのエンドポイントは変更されませんが、基盤となる IP アドレスは変更される場合があります。スイッチオーバー中にアプリケーションが予期通りに継続して動作することを保証するため、エンドポイントを使用することを推奨します。
インスタンスに重大な障害が発生した場合、スイッチオーバーに通常より長い時間がかかることがあります。
プライマリノードとセカンダリノードの手動切り替え
インスタンス ページに移動します。上部のナビゲーションバーから、RDS インスタンスが配置されているリージョンを選択します。その後、対象の RDS インスタンスを見つけ、その ID をクリックします。
左側のナビゲーションウィンドウで、インスタンスの可用性 をクリックします。
可用性情報 セクションで、プライマリ/セカンダリノードの切り替え をクリックします。
スイッチオーバー実行時刻を選択し、確認 をクリックします。
重要プライマリ/セカンダリ スイッチオーバー中は、データベースおよびアカウントの管理、ネットワークタイプの変更などの操作は実行できません。そのため、現在の設定で即時切り替え を選択することを推奨します。
Cluster Edition のインスタンスでは、基本情報 ページのインスタンストポロジ図からもプライマリ/セカンダリ スイッチオーバーを実行できます。
自動プライマリ/セカンダリ スイッチオーバーの一時無効化
自動プライマリ/セカンダリ スイッチオーバーはデフォルトで 有効 です。プライマリノードに障害が発生した場合、RDS は自動的にセカンダリノードへ切り替えます。以下のシナリオでは、一時的に自動切り替えを無効化できます:
大規模販売促進期間中のシステム可用性への影響を回避するため。
重要なアプリケーションのアップグレード中に、スイッチオーバーによる予期しない変数の導入を防止するため。
大規模イベントや安定性確保期間中、プライマリ/スタンバイ スイッチオーバーがシステム安定性に影響を与えることを防ぐため。
インスタンス ページに移動します。上部のナビゲーションバーから、RDS インスタンスが配置されているリージョンを選択します。その後、対象の RDS インスタンスを見つけ、その ID をクリックします。
左側のナビゲーションウィンドウで、インスタンスの可用性 をクリックします。
可用性情報 セクションで、自動プライマリ/セカンダリ スイッチオーバー をクリックします。
説明自動プライマリ/セカンダリ スイッチオーバー ボタンが表示されない場合は、本トピックで説明する前提条件を満たしていることをご確認ください。
一時無効化 を選択し、無効化終了時刻 を設定してから、確認 をクリックします。
説明指定した 無効化終了時刻 を過ぎると、自動プライマリ/セカンダリ スイッチオーバーは自動的に再有効化されます。
無効化期間のデフォルト値は 1 日です。最大 7 日間まで設定可能で、最終日は 23:59:59 に終了します。
設定完了後、インスタンスの可用性 ページで、一時無効化の有効期限を確認できます。
プライマリ/セカンダリ スイッチオーバーログの確認
インスタンス ページに移動します。上部のナビゲーションバーから、RDS インスタンスが配置されているリージョンを選択します。その後、対象の RDS インスタンスを見つけ、その ID をクリックします。
左側のナビゲーションウィンドウで、インスタンスの可用性 をクリックします。
プライマリ/セカンダリ スイッチオーバーログ セクションで、ログの照会期間を指定します。

よくある質問
Q:セカンダリノードにアクセスできますか?
A:Cluster Edition のインスタンスに限り、セカンダリノードへのアクセスが可能です。その他のインスタンスエディションのセカンダリノードはアクセスできません。
Q:プライマリ/セカンダリ スイッチオーバー後、元のプライマリノードへ手動で戻す必要がありますか?
A:いいえ。プライマリノードとセカンダリノード間のデータは完全に同期されています。スイッチオーバー後、従来のセカンダリノードが新しいプライマリノードとなります。追加の操作は不要です。
Q:プライマリ/スタンバイ スイッチオーバー後、インスタンスステータスが 10 分以上「実行中」に戻らない場合、考えられる原因と解決方法は?
RDS において異常イベントによって高可用性(HA)スイッチオーバーがトリガーされた場合、アプリケーションの接続保持(persistent connections)が接続状態の変化を検出できないことがあります。ソケットタイムアウト値を設定していない場合、アプリケーションはデータベースからの応答を無限に待機し、通常数百秒後にタイムアウトします。この期間中、一部のデータベース接続が利用不可となり、SQL ステートメントの失敗が頻発します。無効な接続を回避するため、ネットワークエラー時の無限待機を防ぎダウンタイムを低減するために、connectTimeout および socketTimeout の設定を推奨します。
タイムアウト値はワークロードおよび使用パターンに応じて設定してください。オンライントランザクション処理(OLTP)のシナリオでは、connectTimeout を 1~2 秒、socketTimeout を 60~90 秒に設定することを推奨します。これらの値は参考値です。
関連 API
API | 説明 |
RDS インスタンスのプライマリノードとセカンダリノードを切り替えます。 | |
RDS インスタンスの自動プライマリ/セカンダリ スイッチオーバーを有効または無効にします。 | |
RDS インスタンスの自動プライマリ/セカンダリ スイッチオーバー構成を取得します。 |