Amazon Relational Database Service
ユーザーガイド (API バージョン 2014-10-31)

Microsoft SQL Server のマルチ AZ 配置

マルチ AZ 配置は、DB インスタンスの拡張された可用性、データ堅牢性、および耐障害性を提供します。予定されたデータベースメンテナンスまたは予期しないサービス障害時に、Amazon RDS は自動的に最新のセカンダリ DB インスタンスにフェイルオーバーします。この機能により、データベースオペレーションを手動介入なしで速やかに再開できます。プライマリインスタンスおよびスタンバイインスタンスは、同じエンドポイントを使用します。このエンドポイントの物理的なネットワークアドレスは、フェイルオーバープロセスの一環としてセカンダリレプリカに移行します。フェイルオーバーが発生した場合、アプリケーションを再構成する必要はありません。

Amazon RDS は、SQL Server データベースミラーリングまたは常時稼働アベイラビリティーグループによる Microsoft SQL Server のマルチ AZ 配置をサポートしています。Amazon RDS は、マルチ AZ 配置の状態を監視および維持します。問題が発生した場合、RDS は異常のある DB インスタンスを自動的に修正し、同期を再確立して、フェイルオーバーを開始します。フェイルオーバーは、スタンバイとプライマリが完全に同期している場合にのみ開始します。何も管理する必要はありません。

SQL Server Multi-AZ をセットアップすると、RDS はインスタンス上のすべてのデータベースを自動的にミラーリングまたは常時稼働を使用するように設定します。Amazon RDS は、プライマリ、監視、およびセカンダリ DB インスタンスを処理します。

設定は自動であるため、RDS はデプロイした SQL Server のバージョンに基づいてミラーリングまたは常時稼働を選択します。Amazon RDS は、以下の SQL Server のバージョンおよびエディションで、ミラーリング付きのマルチ AZ または常時稼働をサポートしていますが、例外があります。

  • SQL Server 2017: Standard Edition および Enterprise Edition (常時稼働は Enterprise Edition 14.00.3049.1 以降でサポートされています)。

  • SQL Server 2016: Standard Edition および Enterprise Edition (常時稼働は Enterprise Edition 13.00.5216.0 以降でサポートされています)。

  • SQL Server 2014: Standard および Enterprise Edition

  • SQL Server 2012: Standard および Enterprise Edition

  • SQL Server 2008 R2: Standard および Enterprise Edition

Amazon RDS では、以下の例外を除いて、すべての AWS リージョンにおける SQL Server のマルチ AZ がサポートされます。

  • 米国西部 (北カリフォルニア): ここでは、ミラーリングも常時稼働もサポート対象外

  • アジアパシフィック (シドニー): VPC の DB インスタンスでサポートされます。

  • アジアパシフィック (東京): VPC の DB インスタンスでサポートされます。

  • 南米 (サンパウロ): m1 または m2 以外のすべての DB インスタンスクラスでサポートされます。

  • 欧州 (ストックホルム): ここでは、ミラーリングも常時稼働もサポート対象外

Microsoft SQL Server DB インスタンスへのマルチ AZ の追加

AWS マネジメントコンソール を使用して新しい SQL Server DB インスタンスを作成する場合、ミラーリングまたは常時稼働によるマルチ AZ を追加できます。これを行うには、[DB 詳細の指定] ページの [マルチ AZ 配置] リストから [Yes (Mirroring / Always On) (はい (ミラーリング/常時稼働))] を選択します。詳細については、「Microsoft SQL Server データベースエンジンを実行する DB インスタンスを作成する」を参照してください。

AWS マネジメントコンソール を使用して既存の SQL Server の DB インスタンスを変更する場合、[DB インスタンスの変更] ページで [マルチ AZ 配置] リストから [Yes (Mirroring / Always On) (はい (ミラーリング/常時稼働))] を選択して、ミラーリングまたは常時稼働によるマルチ AZ を追加します。詳細については、「Microsoft SQL Server データベースエンジンを実行する DB インスタンスの変更」を参照してください。

Microsoft SQL Server マルチ AZ 配置の注意事項と推奨事項

以下に示しているのは、Microsoft SQL Server DB インスタンスでマルチ AZ 配置を使用するときのいくつかの制限事項です。

  • クロスリージョンマルチ AZ は、現在サポートされていません。

  • データベースの読み取りアクティビティを受け入れるように、セカンダリを設定することはできません。

  • 常時稼働のマルチ AZ は、インメモリ最適化をサポートします。

  • SQL Server マルチ AZ 配置内の SQL Server DB インスタンス上のデータベースの名前を変更することはできません。そのようなインスタンスのデータベースの名前を変更する必要がある場合、まず DB インスタンスのマルチ AZ を無効にし、それから名前を変更します。最後に、DB インスタンスのマルチ AZ を再び有効にします。

  • 完全な復旧モデルを使用してバックアップされているマルチ AZ DB インスタンスのみ復元できます。

以下に示しているのは、Microsoft SQL Server DB インスタンスでマルチ AZ 配置を使用するときのいくつかの注意事項です。

  • Amazon RDS は常時稼働可用性グループのリスナーエンドポイントを公開しますエンドポイントはコンソールに表示され、DescribeDBInstances API によってエンドポイントフィールドのエントリとして返されます。

  • Amazon RDS は、可用性グループのマルチサブネットフェイルオーバーをサポートします。

  • VPC 内の SQL Server DB インスタンスで SQL Server のマルチ AZ を使用するには、まず、少なくとも 2 つの異なるアベイラビリティーゾーンにサブネットを持つ DB サブネットグループを作成します。次に、その DB サブネットグループを SQL Server DB インスタンスのプライマリレプリカに割り当てます。

  • マルチ AZ 配置にするために DB インスタンスが変更されている場合は、その変更中、[変更中] のステータスになります。Amazon RDS がスタンバイを作成し、プライマリ DB インスタンスのバックアップを作成します。このプロセスが完了した後で、プライマリ DB インスタンスのステータスが [利用可能] になります。

  • マルチ AZ 配置では、すべてのデータベースが同じノードにあります。プライマリホストのデータベースがフェイルオーバーされる場合は、すべての SQL Server データベースが 1 つのアトミックユニットとしてスタンバイホストにフェイルオーバーされます。Amazon RDS は新しい正常なホストをプロビジョンし、異常のあるホストと置き換えます。

  • ミラーリングまたは常時稼働を採用したマルチ AZ は、1 つのスタンバイレプリカをサポートします。

  • ユーザー、ログイン、アクセス許可はセカンダリに自動的にレプリケートされます。それらを再作成する必要はありません。ユーザー定義のサーバートール (SQL Server 2012 の機能) は常時稼働インスタンスのマルチ AZ インスタンスでのみレプリケーションされます。

  • SQL Server Agent のジョブがある場合は、それらをセカンダリ上でレプリケートします。それらのジョブは msdb データベースに保存され、このデータベースはミラーリングまたは常時稼働ではレプリケートできないためです。最初に元のプライマリにジョブを作成してから、フェイルオーバーし、新しいプライマリに同じジョブを作成します。

  • 同期的データレプリケーションのため、1 つのアベイラビリティーゾーン内のスタンダード DB インスタンスのデプロイと比較した場合、レイテンシーが長くなる可能性があります。

  • フェイルオーバー時間は、復旧プロセスの完了までにかかる時間の影響を受けます。大量のトランザクションがあると、フェイルオーバー時間はより長くなります。

以下に示しているのは、Microsoft SQL Server DB インスタンスでマルチ AZ 配置を使用するときのいくつかの推奨事項です。

  • 本稼働または本稼働前の環境で使用されるデータベースには、高可用性のためのマルチ AZ 配置、一貫した高速パフォーマンスのためのプロビジョンド IOPS、およびプロビジョンド IOPS 用に最適化されたインスタンスクラス (m3.large 以上、m4.large 以上) をお勧めします。

  • セカンダリ用のインスタンスにはアベイラビリティーゾーン (AZ) を選択することができません。アプリケーションホストをデプロイするときには、この点を考慮してください。データベースが別の AZ にフェイルオーバーする可能性があるため、アプリケーションホストがデータベースと同じ AZ に含まれない場合があります。このため、特定の AWS リージョン内のすべての AZ 間で、アプリケーションホストのバランスをとることをお勧めします。

  • 最高のパフォーマンスのために、大量データの読み込みオペレーション中はミラーリングや常時稼働を有効にしないでください。できる限り高速でデータを読み込む必要がある場合は、DB インスタンスをマルチ AZ 配置に変換する前にデータの読み込みを終了します。

  • SQL Server データベースにアクセスするアプリケーションには、接続エラーを見つける例外処理が必要です。以下のコード例では、通信エラーを見つける try/catch ブロックを示しています。

    for (int iRetryCount = 0; (iRetryCount < RetryMaxAttempts && keepInserting); iRetryCount++) { using (SqlConnection connection = new SqlConnection(DatabaseConnString)) { using (SqlCommand command = connection.CreateCommand()) { command.CommandText = "INSERT INTO SOME_TABLE VALUES ('SomeValue');"; try { connection.Open(); while (keepInserting) { command.ExecuteNonQuery(); intervalCount++; } connection.Close(); } catch (Exception ex) { Logger(ex.Message); } } } if (iRetryCount < RetryMaxAttempts && keepInserting) { Thread.Sleep(RetryIntervalPeriodInSeconds * 1000); } }
  • マルチ AZ インスタンスを使用する場合、Set Partner Off コマンドは使用しないでください。たとえば、以下は実行しないでください。

    --Don't do this ALTER DATABASE db1 SET PARTNER off
  • 復旧モードを simple に設定しないでください。たとえば、以下は実行しないでください。

    --Don't do this ALTER DATABASE db1 SET RECOVERY simple
  • マルチ AZ DB インスタンスに新しいログインを作成するときは、DEFAULT_DATABASE パラメータは使用しないでください。これらの設定は、スタンドバイ用ミラーには適用できないためです。たとえば、以下は実行しないでください。

    --Don't do this CREATE LOGIN [test_dba] WITH PASSWORD=foo, DEFAULT_DATABASE=[db2]

    また、以下の操作をしないでください。

    --Don't do this ALTER LOGIN [test_dba] SET DEFAULT_DATABASE=[db3]

セカンダリの場所を調べる

AWS マネジメントコンソール を使用して、セカンダリレプリカの場所を調べることができます。VPC 内のプライマリ DB インスタンスを設定する場合は、セカンダリの場所がわかっている必要があります。


				シングル AZ のシナリオ

AWS CLI の describe-db-instances コマンド、または RDS API の DescribeDBInstances アクションを使用して、セカンダリのアベイラビリティーゾーンを表示することもできます。その出力には、スタンバイミラーが配置されているセカンダリ AZ が表示されます。

ミラーリングから常時稼働への移行

ミラーリングから常時稼働に移行するには、まずバージョンを確認してください。Enterprise Edition 13.00.5216.0 より前のバージョンの DB インスタンスを使用している場合は、インスタンスにパッチを適用して 13.00.5216.0 以降に変更します。

常時稼働にアップグレードするには、インスタンスを変更してマルチ AZ を削除してから、再度修正してマルチ AZ を追加します。これにより、インスタンスは常時稼働を使用するように変換されます。