高可用性を確保するため、RDS は、プライマリノードが利用できなくなった場合や、緊急のフェイルオーバーが必要な潜在的リスクがある場合に、自動的にプライマリ/スタンバイフェイルオーバーをトリガーします。このプロセス中に、プライマリノードとスタンバイノードのロールが交換されます。インスタンスエンドポイントは変更されず、アプリケーションは新しいプライマリノードに自動的に再接続します。プライマリノードとスタンバイノードは、手動で切り替えることもできます。
前提条件
-
インスタンスがプライマリインスタンスである場合、次のいずれかのエディションである必要があります。
-
High-availability Edition
-
Enterprise Edition (Three-node)
-
Cluster Edition
説明Basic Edition のインスタンスにはスタンバイノードがなく、プライマリ/スタンバイフェイルオーバーをサポートしていません。
-
-
インスタンスが読み取り専用インスタンスである場合、High-availability Edition であり、ストレージとしてクラウドディスクを使用している必要があります。
背景情報
-
自動フェイルオーバー:この機能はデフォルトで有効になっています。プライマリノードに障害が発生してアクセスできなくなった場合、システムは自動的にスタンバイノードにフェイルオーバーします。フェイルオーバーをトリガーする要因の詳細については、「プライマリ/スタンバイフェイルオーバーの理由」をご参照ください。
-
手動フェイルオーバー:自動フェイルオーバーが有効になっている場合でも、手動でフェイルオーバーを開始できます。手動フェイルオーバーは、ディザスタリカバリ訓練や、マルチアベイラビリティゾーンのシナリオで最寄りのノードに接続する場合に役立ちます。
-
High-availability Edition のインスタンスでは、データはプライマリノードとスタンバイノード間で同期的にレプリケーションされます。アクセスできるのはプライマリノードのみです。スタンバイインスタンスはバックアップとしてのみ機能し、トラフィックを処理することはできません。
-
High-availability Edition の読み取り専用インスタンスもプライマリ/スタンバイフェイルオーバーをサポートしており、プライマリ/スタンバイフェイルオーバーのログを表示できます。
他のデータベースエンジンのプライマリ/スタンバイフェイルオーバーを実行するには、次のトピックをご参照ください。
影響
-
プライマリ/スタンバイフェイルオーバーにより、最大 15 秒間の短いサービス中断が発生します。アプリケーションに自動再接続メカニズムがあることを確認してください。
アプリケーションがデータベース接続管理に古いバージョンの Druid コンポーネントを使用している場合、切断後にアプリケーションの接続が自動的に再接続されないことがあります。この問題を回避するには、Druid をバージョン 1.1.16 以降にアップグレードすることを推奨します。
-
インスタンスに読み取り専用インスタンスがアタッチされている場合、フェイルオーバー後に読み取り専用インスタンスで数分間のレプリケーション遅延が発生することがあります。これは、レプリケーションリンクを再構築し、増分データを同期する必要があるためです。
-
プライマリ/スタンバイフェイルオーバーではインスタンスエンドポイントは変更されませんが、基盤となる IP アドレスが変更される可能性があります。インスタンスエンドポイントを使用している限り、フェイルオーバーはアプリケーションに影響しません。
-
インスタンスに障害が発生した場合、フェイルオーバープロセスに時間がかかることがあります。
プライマリノードとスタンバイノードの手動切り替え
- RDSインスタンスにアクセスし、上部のリージョンを選択し、対象のRDSインスタンスのIDをクリックします。
-
インスタンスの可用性 を選択します。
-
可用性情報 セクションで、プライマリ/セカンダリノードの切り替え をクリックします。
-
切り替え時間を選択し、OK をクリックします。
重要プライマリ/スタンバイフェイルオーバー中は、データベースやアカウントの管理、ネットワークタイプの切り替えなど、多くの操作を実行できません。[指定時間内に切り替え] を選択することを推奨します。
Cluster Edition インスタンスの場合、基本情報 ページのインスタンストポロジ図からもプライマリ/スタンバイフェイルオーバーを実行できます。
自動プライマリ/スタンバイフェイルオーバーの一時的な無効化
自動フェイルオーバーは、デフォルトで [オン] になっています。プライマリノードに障害が発生すると、システムは自動的にスタンバイノードへのフェイルオーバーをトリガーします。以下のシナリオでは、自動プライマリ/スタンバイフェイルオーバーを一時的に無効にすることができます。
-
大規模なプロモーション中に、フェイルオーバーがシステムの可用性に影響を与えるのを防ぐため。
-
重要なアプリケーションのアップグレード中に、フェイルオーバーという変数を持ち込まないようにするため。
-
最大限の安定性が求められる主要なイベントや期間中に、フェイルオーバーがシステムの安定性に影響を与えるのを防ぐため。
- RDSインスタンスにアクセスし、上部のリージョンを選択し、対象のRDSインスタンスのIDをクリックします。
-
インスタンスの可用性 を選択します。
-
可用性情報 セクションで、プライマリデータベースの自動切り替え をクリックします。
説明プライマリデータベースの自動切り替え ボタンが表示されない場合は、インスタンスがこのトピックの前提条件を満たしていることを確認してください。
-
一時的なシャットダウン を選択し、[一時無効化の終了時刻] を設定してから、OK をクリックします。
説明-
[一時無効化の終了時刻] に達すると、自動プライマリ/スタンバイフェイルオーバーは自動的に再開されます。
-
デフォルトでは、自動フェイルオーバーは 1 日間一時的に無効になります。終了時刻は、現在の日付から最大 7 日後の 23:59:59 に設定できます。
-
設定が完了すると、インスタンスの可用性 ページで一時停止の終了時刻を確認できます。
プライマリ/スタンバイフェイルオーバーログの表示
- RDSインスタンスにアクセスし、上部のリージョンを選択し、対象のRDSインスタンスのIDをクリックします。
-
インスタンスの可用性 を選択します。
-
スイッチオーバーのログ セクションで、クエリの期間を調整してログを表示します。
ログテーブルには、[切り替えイベント ID]、[切り替え開始時刻]、[切り替え終了時刻]、[理由] などの列が含まれます。ログテーブルには、各プライマリ/スタンバイフェイルオーバーの詳細が記録されます。たとえば、手動フェイルオーバーは、理由 [手動操作 (インスタンス HA 切り替え)] としてログに記録されます。
よくある質問
-
Q:スタンバイノードにアクセスできますか。
A:スタンバイノードにアクセスできるのは、Cluster Edition インスタンスのみです。他のエディションのインスタンスでは、スタンバイノードにアクセスできません。
-
Q:フェイルオーバー後、手動で元のプライマリノードに切り替える必要はありますか。
A:いいえ。プライマリノードとスタンバイノードのデータは同一です。フェイルオーバー後、以前のスタンバイノードが新しいプライマリノードになります。追加のアクションは必要ありません。
-
Q:フェイルオーバー後、インスタンスのステータスが 10 分以上「実行中」に戻らない場合はどうすればよいですか。
A:RDS で例外によって高可用性フェイルオーバーがトリガーされると、長時間有効なアプリケーション接続が接続ステータスの変化を検出できない場合があります。ソケットタイムアウトが設定されていない場合、アプリケーションはデータベースからの応答を無期限に待機し、切断されるまでに数百秒かかることがあります。この間、一部のデータベース接続が機能せず、多数の SQL 実行エラーが発生する可能性があります。これらの無効な接続を回避するには、connectTimeout および socketTimeout パラメーターを設定することを推奨します。これにより、ネットワークエラー中にアプリケーションが無期限に待機するのを防ぎ、復旧時間を短縮できます。
ビジネスのワークロードと使用パターンに基づいてタイムアウト値を評価してください。オンライントランザクション処理 (OLTP) ワークロードの場合、connectTimeout を 1~2 秒、socketTimeout を 60~90 秒に設定することを推奨します。これらの値は参考用です。
関連 API
|
API |
説明 |
|
RDS インスタンスのプライマリノードとスタンバイノードを手動でスイッチオーバーします。 |
|
|
RDS インスタンスの自動プライマリ/スタンバイフェイルオーバーを有効または無効にします。 |
|
|
RDS インスタンスの自動プライマリ/スタンバイフェイルオーバー設定を照会します。 |