、プライマリRDSインスタンスに障害が発生したり、プライマリRDSインスタンスに潜在的なリスクがあり、セカンダリRDSインスタンスで緊急修復が実行された場合、システムはワークロードをプライマリRDSインスタンスとセカンダリRDSインスタンスの間で自動的に切り替えて、サービスの可用性を確保します。 プライマリ /セカンダリの切り替えが完了すると、セカンダリRDSインスタンスがプライマリRDSインスタンスとして機能します。 データベースシステムへの接続に使用されるエンドポイントは変更されません。 アプリケーションは、エンドポイントを使用して新しいプライマリRDSインスタンスに自動的に接続できます。 プライマリRDSインスタンスとセカンダリRDSインスタンスの間でワークロードを手動で切り替えることもできます。
前提条件
RDSインスタンスがプライマリインスタンスの場合、RDSインスタンスが次のRDSエディションのいずれかを実行していることを確認します。
RDS高可用性エディション
RDSエンタープライズエディション
RDSクラスターエディション
説明RDS Basic Editionを使用する場合、セカンダリRDSインスタンスは提供されず、プライマリ /セカンダリの切り替え機能はサポートされていません。
RDSインスタンスが読み取り専用インスタンスの場合、RDSインスタンスがRDS High-availability Editionを実行し、クラウドディスクを使用していることを確認します。
背景情報
自動プライマリ /セカンダリ切り替え: デフォルトでは、自動プライマリ /セカンダリ切り替え機能が有効になっています。 プライマリRDSインスタンスに障害が発生した場合、システムは自動的にワークロードをセカンダリRDSインスタンスに切り替えます。 プライマリ /セカンダリ切り替えの原因の詳細については、「プライマリ /セカンダリ切り替えの理由」をご参照ください。
手動のプライマリ /セカンダリスイッチオーバー: 自動プライマリ /セカンダリスイッチオーバー機能が有効になっている場合でも、プライマリRDSインスタンスとセカンダリRDSインスタンスの間でワークロードを手動で切り替えることができます。 ディザスタリカバリドリルでは、手動のプライマリ /セカンダリ切り替えを実行できます。 マルチゾーンデプロイ方法を使用し、アプリケーションに最も近いゾーンのRDSインスタンスにアプリケーションを接続する場合は、手動のプライマリ /セカンダリ切り替えを実行することもできます。
プライマリRDSインスタンスとセカンダリRDSインスタンス間でデータがリアルタイムで同期されます。 プライマリRDSインスタンスにのみアクセスできます。 セカンダリRDSインスタンスはスタンバイとしてのみ実行されます。 セカンダリRDSインスタンスにアクセスできません。
RDS High-availability Editionの読み取り専用RDSインスタンスは、プライマリ /セカンダリの切り替え機能もサポートしており、プライマリ /セカンダリの切り替えログを表示できます。
異なるデータベースエンジンを実行するプライマリRDSインスタンスとセカンダリRDSインスタンス間でワークロードを切り替える方法の詳細については、以下のトピックを参照してください。
影響
通常30秒未満のサービス中断は、プライマリ /セカンダリの切り替え中に発生します。 アプリケーションがデータベースシステムに自動的に再接続するように構成されていることを確認します。
アプリケーションが以前のバージョンのDruidコンポーネントを接続管理に使用している場合、アプリケーションは切断後にデータベースシステムに自動的に再接続できないことがあります。 この問題を解決するには、Druidコンポーネントを1.1.16以降にアップグレードすることを推奨します。
プライマリ /セカンダリの切り替え後、プライマリRDSインスタンスにアタッチされている読み取り専用RDSインスタンスは、プライマリRDSインスタンスへのデータの複製と、プライマリRDSインスタンスからの増分データの同期に使用される接続を再確立する必要があります。 その結果、読み取り専用RDSインスタンスのデータは数分の待ち時間を示します。
プライマリ /セカンダリの切り替えでは、RDSインスタンスへの接続に使用されるエンドポイントは変更されません。 ただし、エンドポイントに関連付けられている IP アドレスが変更される場合があります。 アプリケーションがエンドポイントを使用してRDSインスタンスに接続する場合、プライマリ /セカンダリの切り替え後もアプリケーションを期待どおりに実行できます。
インスタンスに障害が発生すると、切り替えに時間がかかる場合があります。
手動のプライマリ /セカンダリ切り替えの実行
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、インスタンスの可用性をクリックします。
可用性情報表示されるページの可用性情報セクションで、プライマリ/セカンダリノードの切り替えをクリックします。
プライマリ /セカンダリの切り替えを実行する時刻を指定します。 [OK] をクリックします。
重要プライマリ /セカンダリの切り替え中に特定の操作を実行することはできません。 たとえば、データベースやアカウントの管理やネットワークタイプの変更はできません。 [指定時間範囲内] を選択することを推奨します。
RDS Cluster Editionを使用している場合、[基本情報] ページの [インスタンストポロジ管理] セクションでプライマリ /セカンダリの切り替えを実行できます。
自動プライマリ /セカンダリ切り替え機能を短時間無効にする
デフォルトでは、自動プライマリ /セカンダリ切り替え機能が有効になっています。 プライマリRDSインスタンスに障害が発生した場合、システムは自動的にワークロードをプライマリRDSインスタンスからセカンダリRDSインスタンスに切り替えます。 次の状況では、プライマリ /セカンダリの自動切り替え機能を一時的に無効にできます。
プライマリ /セカンダリの切り替えがシステムの可用性に影響を与えない大規模な販売促進
プライマリ /セカンダリの切り替えで予期しない問題が発生しないようにする重要なアプリケーションのアップグレード
プライマリ /セカンダリの切り替えがシステムの安定性に影響を与えないようにする主要なイベント
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、インスタンスの可用性をクリックします。
可用性情報セクションで、自動プライマリ /セカンダリ切り替えをクリックします。
説明[自動プライマリ /セカンダリ切り替え] が見つからない場合は、プライマリRDSインスタンスがすべての前提条件を満たしているかどうかを確認してください。
[一時的に無効にする] を選択し、[締め切り] パラメーターを設定し、[OK] をクリックします。
説明Deadlineパラメーターで指定された日時になると、自動プライマリ /セカンダリスイッチオーバー機能が自動的に有効になります。
Deadlineパラメーターを設定しない場合、自動プライマリ /セカンダリ切り替え機能はデフォルトで1日間無効になります。 Deadlineパラメーターは、最大7日後に23:59:59に設定できます。
設定が完了したら、インスタンスの可用性 ページで自動プライマリ /セカンダリフェイルオーバー機能が自動的に有効になる期限を確認できます。
プライマリ /セカンダリフェールオーバーログの表示
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、インスタンスの可用性をクリックします。
表示されるページの [プライマリ /セカンダリ切り替えログ] セクションで、時間範囲を選択し、選択した時間範囲で生成されたプライマリ /セカンダリ切り替えログを表示します。
よくある質問
データベースシステムのセカンダリRDSインスタンスにアクセスできますか。
RDS Cluster Editionを使用している場合、RDSクラスター内のセカンダリノードにアクセスできます。 別のRDSエディションを使用している場合、セカンダリRDSインスタンスにアクセスできません。
プライマリ /セカンダリの切り替え後、ワークロードをセカンダリRDSインスタンスからプライマリRDSインスタンスに手動で切り替える必要がありますか。
いいえ。プライマリ /セカンダリの切り替え後、ワークロードをセカンダリRDSインスタンスからプライマリRDSインスタンスに手動で切り替える必要はありません。 プライマリRDSインスタンスのデータは、セカンダリRDSインスタンスのデータと同じです。 プライマリ /セカンダリの切り替え後、セカンダリRDSインスタンスは新しいプライマリRDSインスタンスになります。 追加の操作は必要ありません。
プライマリ /セカンダリスイッチオーバーが実行されるたびに、プライマリ /セカンダリスイッチオーバーが完了してから10分後にRDSインスタンスが期待どおりに実行されません。 考えられる原因は何ですか? 問題を処理するにはどうすればよいですか?
RDSインスタンスの例外がプライマリ /セカンダリの切り替えをトリガーして高可用性を確保する場合、アプリケーションは接続の変更を特定して応答できない場合があります。 ソケット接続にタイムアウト期間が指定されていない場合、アプリケーションはデータベースが結果を返すのを待ちます。 ほとんどの場合、アプリケーションは数百秒後に切断されます。 この期間中、RDSインスタンスへの一部の接続が期待どおりに機能せず、多数のSQL文の実行に失敗します。 無効な接続を回避するには、connectTimeoutパラメーターとsocketTimeoutパラメーターを設定して、ネットワークエラーによってアプリケーションが長時間待機しないようにすることをお勧めします。 これにより、故障からの回復に要する時間が短縮される。
これらのパラメーターは、ワークロードと使用モードに基づいて設定する必要があります。 オンライントランザクションの場合、connectTimeoutパラメーターを1〜2秒、socketTimeoutパラメーターを60〜90秒に設定することを推奨します。 この构成は参照だけのためです。
関連する API 操作
API 操作 | 説明 |
プライマリインスタンスとセカンダリインスタンス間でワークロードを切り替えます。 | |
インスタンスの自動プライマリ /セカンダリ切り替え機能を有効または無効にします。 | |
インスタンスの自動プライマリ /セカンダリスイッチオーバー機能の設定を照会します。 |