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