ApsaraDB RDS for SQL Serverは、高可用性を確保するためのプライマリ /セカンダリの切り替え機能を提供します。 システム操作エラーまたはハードウェア障害によりデータベースシステムのプライマリRDSインスタンスに障害が発生した場合、システムはワークロードをプライマリRDSインスタンスからセカンダリRDSインスタンスに自動的に切り替えます。 プライマリ /セカンダリの切り替えが完了すると、セカンダリRDSインスタンスが新しいプライマリRDSインスタンスになります。 データベースシステムへの接続に使用されるエンドポイントは変更されません。 アプリケーションは、エンドポイントを使用して新しいプライマリRDSインスタンスに自動的に接続できます。 これにより、高い可用性が保証されます。 また、データベースシステムをアップグレード、保守、またはトラブルシューティングする必要があるときに、プライマリRDSインスタンスとセカンダリRDSインスタンスの間でワークロードを手動で切り替えることもできます。
前提条件
プライマリRDSインスタンスは、RDS High-availability EditionまたはRDS Cluster Editionを実行します。
RDS Cluster Editionを使用する場合、自動プライマリ /セカンダリ切り替えのみがサポートされます。 プライマリRDSインスタンスとセカンダリRDSインスタンス間でワークロードを手動で切り替えることはできません。 プライマリRDSインスタンスとセカンダリRDSインスタンス間でワークロードを手動で切り替える場合は、Alibaba Cloudテクニカルサポートにお問い合わせください。
RDS Basic Editionを使用する場合、セカンダリRDSインスタンスは提供されません。 したがって、RDS Basic Editionはプライマリ /セカンダリの切り替え機能をサポートしていません。
説明
自動プライマリ /セカンダリ切り替え: デフォルトでは、自動プライマリ /セカンダリ切り替え機能が有効になっています。 プライマリRDSインスタンスに障害が発生した場合、システムは自動的にワークロードをセカンダリRDSインスタンスに切り替えます。 プライマリ /セカンダリ切り替えの原因の詳細については、「プライマリ /セカンダリ切り替えの理由」をご参照ください。
手動のプライマリ /セカンダリスイッチオーバー: 自動プライマリ /セカンダリスイッチオーバー機能が有効になっている場合でも、プライマリRDSインスタンスとセカンダリRDSインスタンスの間でワークロードを手動で切り替えることができます。 ディザスタリカバリドリルでは、手動のプライマリ /セカンダリ切り替えを実行できます。 マルチゾーンデプロイ方法を使用し、アプリケーションに最も近いゾーンのRDSインスタンスにアプリケーションを接続する場合は、手動のプライマリ /セカンダリ切り替えを実行することもできます。
プライマリRDSインスタンスとセカンダリRDSインスタンス間でデータがリアルタイムで同期されます。 プライマリRDSインスタンスにのみアクセスできます。 セカンダリRDSインスタンスはスタンバイとしてのみ実行されます。
制限事項
サーバーレスRDSインスタンスは、手動のプライマリ /セカンダリ切り替えをサポートしていません。 詳細については、「概要」をご参照ください。 サーバーレスRDSインスタンスに障害が発生した場合、システムはプライマリサーバーレスRDSインスタンスとセカンダリサーバーレスRDSインスタンスの間でワークロードを自動的に切り替えます。
使用上の注意
ApsaraDB RDS for SQL Serverのプライマリ /セカンダリ同期メカニズムにより、データベースシステムのプライマリRDSインスタンスとセカンダリRDSインスタンス間の完全なデータ同期が保証されます。 ただし、ALTER LOGINステートメントのすべてのパラメーター設定が同期されるわけではありません。 ALTER loginステートメントのSID、login_name、およびpasswordパラメーターの設定のみが同期されます。 ApsaraDB RDS for SQL Serverでは、ALTER LOGINステートメントの他のすべてのパラメーターにデフォルト値が使用されます。 詳細については、「ALTER LOGIN (Transact-SQL) 」をご参照ください。
影響
通常30秒未満のサービス中断は、プライマリ /セカンダリの切り替え中に発生します。 アプリケーションがデータベースシステムに自動的に再接続するように構成されていることを確認します。
アプリケーションが以前のバージョンのDruidコンポーネントを接続管理に使用している場合、アプリケーションは切断後にデータベースシステムに自動的に再接続できないことがあります。 この問題を解決するには、Druidコンポーネントを1.1.16以降にアップグレードすることを推奨します。
プライマリ /セカンダリの切り替え後、プライマリRDSインスタンスにアタッチされている読み取り専用RDSインスタンスは、プライマリRDSインスタンスへのデータの複製と、プライマリRDSインスタンスからの増分データの同期に使用される接続を再確立する必要があります。 その結果、読み取り専用RDSインスタンスのデータは数分の待ち時間を示します。
プライマリ /セカンダリの切り替えでは、RDSインスタンスへの接続に使用されるエンドポイントは変更されません。 ただし、エンドポイントに関連付けられている IP アドレスが変更される場合があります。 アプリケーションがエンドポイントを使用してRDSインスタンスに接続する場合、プライマリ /セカンダリの切り替え後もアプリケーションを期待どおりに実行できます。
インスタンスに障害が発生すると、切り替えに時間がかかる場合があります。
手動のプライマリ /セカンダリ切り替えの実行
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、インスタンスの可用性をクリックします。
表示されるページの可用性情報セクションで、プライマリ/セカンダリノードの切り替えをクリックします。
プライマリ /セカンダリの切り替えを実行する時刻を指定します。 次に、[OK] をクリックします。
説明プライマリ /セカンダリの切り替え中に特定の操作を実行することはできません。 たとえば、データベースとアカウントの管理やネットワークタイプの変更はできません。 [指定時間範囲内] を選択することを推奨します。
短時間の自動プライマリ /セカンダリ切り替えを無効にする
シナリオ
デフォルトでは、自動プライマリ /セカンダリ切り替え機能が有効になっています。 プライマリRDSインスタンスに障害が発生した場合、システムは自動的にワークロードをプライマリRDSインスタンスからセカンダリRDSインスタンスに切り替えます。 次の状況では、プライマリ /セカンダリの自動切り替え機能を一時的に無効にできます。
プライマリ /セカンダリの切り替えがシステムの可用性に影響を与えない大規模な販売促進
プライマリ /セカンダリの切り替えで予期しない問題が発生しないようにする重要なアプリケーションのアップグレード
プライマリ /セカンダリの切り替えがシステムの安定性に影響を与えないようにする主要なイベント
手順
[インスタンス] ページに移動します。 上部のナビゲーションバーで、RDS インスタンスが存在するリージョンを選択します。 次に、RDSインスタンスを見つけ、インスタンスのIDをクリックします。
左側のナビゲーションウィンドウで、インスタンスの可用性をクリックします。
可用性情報セクションで、自動プライマリ /セカンダリ切り替えをクリックします。
説明[自動プライマリ /セカンダリ切り替え] が見つからない場合は、プライマリRDSインスタンスがすべての前提条件を満たしているかどうかを確認してください。
[一時的に無効にする] を選択し、[締め切り] パラメーターを設定し、[OK] をクリックします。
説明Deadlineパラメーターで指定された日時になると、自動プライマリ /セカンダリスイッチオーバー機能が自動的に有効になります。
Deadlineパラメーターを設定しない場合、自動プライマリ /セカンダリ切り替え機能はデフォルトで1日間無効になります。 Deadlineパラメーターは、最大7日後に23:59:59に設定できます。
設定が完了したら、インスタンスの可用性 ページで自動プライマリ /セカンダリフェイルオーバー機能が自動的に有効になる期限を確認できます。
プライマリ /セカンダリ切り替えログの表示
プライマリRDSインスタンスがローカルディスクでSQL Server 2008 R2を実行している場合にのみ、プライマリ /セカンダリの切り替えログを表示できます。
[インスタンス] ページに移動します。 上部のナビゲーションバーで、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 操作 | 説明 |
プライマリインスタンスとセカンダリインスタンス間でワークロードを切り替えます。 | |
インスタンスの自動プライマリ /セカンダリ切り替え機能を有効または無効にします。 | |
インスタンスの自動プライマリ /セカンダリスイッチオーバー機能の設定を照会します。 |