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