ApsaraDB RDS for PostgreSQLは、プライマリ /セカンダリの切り替え機能をサポートしています。 データベースシステムのプライマリApsaraDB RDS for PostgreSQLインスタンスに障害が発生した場合、システムはワークロードをプライマリRDSインスタンスからセカンダリRDSインスタンスに自動的に切り替え、サービスの可用性を確保します。 プライマリ /セカンダリの切り替えが完了すると、セカンダリRDSインスタンスは新しいプライマリRDSインスタンスになり、データベースシステムへの接続に使用されるエンドポイントは変更されません。 これにより、アプリケーションは新しいプライマリRDSインスタンスに自動的に接続できます。 プライマリRDSインスタンスとセカンダリRDSインスタンス間でワークロードを手動で切り替えることもできます。
前提条件
RDSインスタンスは、RDS High-availability EditionまたはRDS Cluster Editionを実行します。
RDS Basic Editionでは、セカンダリRDSインスタンスはプロビジョニングされず、プライマリ /セカンダリの切り替え機能はサポートされていません。
RDS High-availability Editionをクラウドディスクで実行し、RDS Cluster Editionをクラウドディスクで実行するRDSインスタンスでは、プライマリ /セカンダリの自動切り替え機能を短時間で無効にできます。
使用上の注意
デフォルトでは、自動プライマリ /セカンダリ切り替え機能が有効になっています。 プライマリRDSインスタンスに障害が発生した場合、システムは自動的にワークロードをセカンダリRDSインスタンスに切り替えます。 プライマリ /セカンダリ切り替えの原因の詳細については、「プライマリ /セカンダリ切り替えの理由」をご参照ください。
自動プライマリ /セカンダリ切り替え機能が有効になっている場合でも、プライマリRDSインスタンスとセカンダリRDSインスタンスの間でワークロードを手動で切り替えることができます。 ディザスタリカバリドリルのために、プライマリRDSインスタンスとセカンダリRDSインスタンスの間でワークロードを手動で切り替えることができます。 マルチゾーンデプロイ方法を使用し、アプリケーションに最も近いゾーンのRDSインスタンスにアプリケーションを接続する場合は、プライマリRDSインスタンスとセカンダリRDSインスタンスの間でプライマリ /セカンダリの切り替えを手動で切り替えることもできます。
プライマリRDSインスタンスとセカンダリRDSインスタンス間でデータがリアルタイムで同期されます。 プライマリRDSインスタンスにのみアクセスできます。 セカンダリRDSインスタンスはスタンバイとしてのみ実行されます。 セカンダリRDSインスタンスにアクセスできません。
RDS High-availability Editionの読み取り専用RDSインスタンスは、プライマリ /セカンダリの切り替え機能もサポートしており、プライマリ /セカンダリの切り替えログを表示できます。
影響
通常30秒未満のサービス中断は、プライマリ /セカンダリの切り替え中に発生します。 アプリケーションがデータベースシステムに自動的に再接続するように構成されていることを確認します。
アプリケーションが以前のバージョンのDruidコンポーネントを接続管理に使用している場合、アプリケーションは切断後にデータベースシステムに自動的に再接続できないことがあります。 この問題を解決するには、Druidコンポーネントを1.1.16以降にアップグレードすることを推奨します。
プライマリ /セカンダリの切り替え後、プライマリRDSインスタンスにアタッチされている読み取り専用RDSインスタンスは、プライマリRDSインスタンスへのデータの複製と、プライマリRDSインスタンスからの増分データの同期に使用される接続を再確立する必要があります。 その結果、読み取り専用RDSインスタンスのデータは数分の待ち時間を示します。
プライマリ /セカンダリの切り替えでは、RDSインスタンスへの接続に使用されるエンドポイントは変更されません。 ただし、エンドポイントに関連付けられている IP アドレスが変更される場合があります。 アプリケーションがエンドポイントを使用してRDSインスタンスに接続する場合、プライマリ /セカンダリの切り替え後もアプリケーションを期待どおりに実行できます。
インスタンスに障害が発生すると、切り替えに時間がかかる場合があります。
プライマリRDSインスタンスとセカンダリ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秒に設定することを推奨します。 この构成は参照だけのためです。
関連する API 操作
API 操作 | 説明 |
プライマリインスタンスとセカンダリインスタンス間でワークロードを切り替えます。 | |
インスタンスの自動プライマリ /セカンダリ切り替え機能を有効または無効にします。 | |
インスタンスの自動プライマリ /セカンダリスイッチオーバー機能の設定を照会します。 |