メニュー
Amazon Relational Database Service
ユーザーガイド (API Version 2014-10-31)

Microsoft SQL Server でのデータベースのミラーリングによるマルチ AZ 配置

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

Amazon RDS は、アクティブにマルチ AZ をモニタリングして、プライマリで問題が発生したときにフェイルオーバーを開始することで、フェイルオーバーを管理します。フェイルオーバーは、プライマリとスタンバイが完全に同期していないと開始されません。Amazon RDS は、異常のある DB インスタンスを自動的に修正し、同期レプリケーションを再構築することで、マルチ AZ 配置をアクティブに維持します。お客様は何も管理する必要はありません。代わりに Amazon RDS がプライマリ、ミラーリング監視、スタンバイインスタンスを処理します。SQL Server のマルチ AZ を設定すると、そのインスタンスのすべてのデータベースが自動的にミラーリングされます。

Amazon RDS では、SQL Server の以下のバージョンおよびエディションのミラーリングによる マルチ AZ がサポートされます。

  • SQL Server 2016: Standard および Enterprise Edition

  • 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 がサポートされます。

  • サポート外

    • 米国西部 (北カリフォルニア)

    • アジアパシフィック (シンガポール)

    • AWS GovCloud (US)

 

SQL Server DB インスタンスへのミラーリングによるマルチ AZ の追加

AWS マネジメントコンソール を使用して新しい SQL Server の DB インスタンスを作成するときは、[Specify DB Details] ページで [Multi-AZ Deployment] リストから [Yes (Mirroring)] を選択して、ミラーリングによるマルチ AZ を追加するだけです。詳細については、「Microsoft SQL Server データベースエンジンを実行する DB インスタンスを作成する」を参照してください。

AWS マネジメントコンソール を使用して既存の SQL Server の DB インスタンスを変更するときは、[Modify DB Instance] ページで [Multi-AZ Deployment] リストから [Yes (Mirroring)] を選択して、ミラーリングによるマルチ AZ を追加するだけです。詳細については、「Microsoft SQL Server データベースエンジンを実行する DB インスタンスの変更」を参照してください。

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

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

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

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

  • 専有テナントの DB インスタンスでは、ミラーリングを使用するマルチ AZ はサポートされません。

  • メモリ最適化が有効化された DB インスタンスでは、ミラーリングを使用するマルチ AZ はサポートされません。詳細については、Microsoft ドキュメントのUnsupported SQL Server Features for In-Memory OLTPを参照してください。

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

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

  • VPC 内の SQL Server DB インスタンスで SQL Server データベースのミラーリングによるマルチ AZ を使用するには、まず、DB サブネットグループを作成し、そのサブネットを 2 つ以上の別々のアベイラビリティーゾーンに割り当てる必要があります。その後、ミラーリング相手の SQL Server DB インスタンスにその DB サブネットグループを割り当てる必要があります。

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

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

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

  • ユーザー、ログイン、アクセス権限はスタンドバイミラーに自動的にレプリケートされます。それらを再作成する必要はありません。ユーザー定義のサーバーの役割 (SQL Server 2012 の機能) はマルチ AZ インスタンスではレプリケーションされません。

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

  • お客様のために実行される同期的データレプリケーションの結果として、1 つのアベイラビリティーゾーン内の標準 DB インスタンスのデプロイと比較した場合、レイテンシーが長くなる可能性があります。

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

  • マルチ AZ DB インスタンスにバックアップファイルを復元するときは、ミラーリングが終了してから、再構築されます。復元しようとしているデータベースだけでなく、DB インスタンスのすべてのデータベースでミラーリングが終了し再構築されます。RDS がミラーリングを再構築している間、DB インスタンスフェイルオーバーすることはできません。復元のサイズよって、ミラーリングの再構築には 30 分以上かかる場合があります。詳細については、「SQL Server データベースのインポートとエクスポート」を参照してください。

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

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

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

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

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

    Copy
    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 コマンドは使用しないでください。たとえば、以下のコマンドは実行しないでください

    Copy
    ALTER DATABASE db1 SET PARTNER off
  • 復旧モードは simple に設定できません。たとえば、以下のコマンドは実行しないでください

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

    Copy
    CREATE LOGIN [test_dba] WITH PASSWORD=foo, DEFAULT_DATABASE=[db2]

    以下のコマンドも実行しないでください

    Copy
    ALTER LOGIN [test_dba] SET DEFAULT_DATABASE=[db3]

スタンバイミラーの場所を調べる

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

 シングル AZ のシナリオ

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

関連トピック