RDS Custom for SQL Server のマルチ AZ 配置の管理 - Amazon Relational Database Service

RDS Custom for SQL Server のマルチ AZ 配置の管理

RDS Custom for SQL Server のマルチ AZ DB インスタンスのデプロイでは、Amazon RDS は、異なるアベイラビリティーゾーン (AZ) で同期スタンバイレプリカを自動的にプロビジョンおよび維持します。プライマリ DB インスタンスは、同期的にアベイラビリティーゾーン間でスタンバイレプリカにレプリケートされ、データの冗長性が提供されます。

重要

SRDS Custom for SQL Server のマルチ AZ 配置は、RDS for SQL Server のマルチ AZ 配置とは異なります。RDS for SQL Server のマルチ AZ とは異なり、RDS Custom はアクセス許可が必要な自身のアカウント内で実行されるため、マルチ AZ DB インスタンスを作成する前に RDS Custom for SQL Server の前提条件を設定する必要があります。

前提条件を満たさないと、マルチ AZ DB インスタンスは実行に失敗するか、自動的にシングル AZ DB インスタンスに戻る可能性があります。前提条件の詳細については、「RDS Custom for SQL Server を使用したマルチ AZ 配置の前提条件」を参照してください。

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

RDS Custom for SQL Server では、マルチ AZ がサポートされます。

RDS Custom DB インスタンスを作成する際にマルチ AZ を指定すると、RDS Custom for SQL Server マルチ AZ 配置を作成できます。コンソールを使用し、DB インスタンスを変更してマルチ AZ オプションを指定することで、既存の RDS Custom for SQL Server DB インスタンスをマルチ AZ 配置に変換できます。AWS CLI または Amazon RDS API を使用して、マルチ AZ DB インスタンスのデプロイを指定することもできます。

RDS コンソールには、スタンバイレプリカ (セカンダリ AZ) のアベイラビリティーゾーンが表示されます。また、describe-db-instances CLI コマンドまたは DescribeDBInstances API オペレーションを使用してセカンダリ AZ を見つけることもできます。

マルチ AZ DB 配置を使用する RDS Custom for SQL Server インスタンスは、シングル AZ 配置と比較して書き込みとコミットのレイテンシーが増加する可能性があります。この増加は DB インスタンス間の同期データレプリケーションが原因で起こる可能性があります。AWS はアベイラビリティーゾーン間でのネットワーク接続レイテンシーが低くなるように設計されていますが、配置がスタンバイレプリカにフェイルオーバーした場合はレイテンシーに変化が見られる可能性があります。

注記

本番ワークロードの場合、高速で一貫したパフォーマンスを実現するために、プロビジョンド IOPS (1 秒あたりの入出力操作) を備えた DB インスタンスクラスを使用することをお勧めします。DB インスタンスクラスの詳細については、「Amazon RDS Custom for SQL Server の要件と制限」を参照してください。

リージョンとバージョンの可用性

RDS Custom for SQL Server のマルチ AZ 配置は、次の SQL Server エディションでサポートされています。

  • SQL Server 2022 および 2019: Enterprise、Standard、Web、Developer Edition

注記

RDS Custom for SQL Server のマルチ AZ 配置は、SQL Server 2019 CU8 (15.00.4073.23) 以前のバージョンではサポートされていません。

RDS Custom for SQL Server のマルチ AZ 配置は、RDS Custom for SQL Server が利用できるすべてのリージョンで利用できます。RDS Custom for SQL Server のマルチ AZ 配置の利用可能なリージョンの詳細については、「RDS Custom for SQL Server でサポートされているリージョンと DB エンジン」を参照してください。

RDS Custom for SQL Server を使用したマルチ AZ 配置の制限事項

RDS Custom for SQL Server のマルチ AZ 配置には、次のような制限事項があります。

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

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

  • マルチ AZ 配置でカスタムエンジンバージョン (CEV) を使用する場合、セカンダリ DB インスタンスも同じ CEV を使用します。セカンダリ DB インスタンスは別の CEV を使用できません。

RDS Custom for SQL Server を使用したマルチ AZ 配置の前提条件

SQL Server シングル AZ 配置の既存の RDS Custom がある場合は、マルチ AZ 配置に変更する前に、次の追加の前提条件が必要です。前提条件は手動で完了するか、提供されている CloudFormation テンプレートを使用して完了するかを選択できます。最新の CloudFormation テンプレートには、シングル AZ 配置とマルチ AZ 配置の両方の前提条件が含まれています。

重要

セットアップを簡単にするために、ネットワークセットアップ手順に記載されている最新の AWS CloudFormation テンプレートファイルを使用して前提条件を作成することをお勧めします。詳細については、「AWS CloudFormation による設定」を参照してください。

注記

既存の RDS Custom for SQL Server シングル AZ 配置をマルチ AZ 配置に変更すると、これらの前提条件を満たす必要があります。前提条件を満たさないと、マルチ AZ の設定は失敗します。前提条件を満たし、RDS Custom for SQL Server シングル AZ 配置からマルチ AZ 配置への変更 の手順を実行します。

  • RDS セキュリティグループのインバウンドルールおよびアウトバウンドルールを更新して、ポート 1120 を許可します。

  • プライベートネットワークのアクセスコントロールリスト (ACL) に DB インスタンス VPC の TCP ポート 0-65535 を許可するルールを追加します。

  • 新しい Amazon SQS VPC エンドポイントを作成して、RDS Custom for SQL Server DB インスタンスが SQS と通信できるようにします。

  • インスタンスプロファイルロールの SQS アクセス許可を更新します。

RDS Custom for SQL Server マルチ AZ 配置の作成

RDS Custom for SQL Server マルチ AZ 配置を作成するには、Amazon RDS Custom SQL Server の DB インスタンスの作成と接続 の手順に従ってください。

重要

セットアップを簡単にするために、ネットワーク設定手順に記載されている最新の AWS CloudFormation テンプレートファイルを使用することをお勧めします。詳細については、「AWS CloudFormation による設定」を参照してください。

マルチ AZ 配置の作成は、完了するまでに数分かかります。

RDS Custom for SQL Server シングル AZ 配置からマルチ AZ 配置への変更

既存の RDS Custom for SQL Server DB インスタンスをシングル AZ 配置からマルチ AZ 配置に変更できます。DB インスタンスを変更すると、Amazon RDS はいくつかのアクションを実行します。

  • プライマリ DB インスタンスのスナップショットを取得します。

  • スナップショットからスタンバイレプリカ用の新しいボリュームを作成します。これらのボリュームはバックグラウンドで初期化され、データが完全に初期化された後に最大のボリュームパフォーマンスが得られます。

  • プライマリおよびセカンダリ DB インスタンス間の同期ブロックレベルレプリケーションをオンにします。

重要

アクティビティのピーク時には、RDS Custom for SQL Server DB インスタンスを本稼働 DB インスタンス上のシングル AZ 配置からマルチ AZ 配置に変更しないことをお勧めします。

AWS では、シングル AZ からマルチ AZ への変換時にダウンタイムを回避するためにスナップショットを使用してスタンバイインスタンスを作成しますが、マルチ AZ への変換時および変換後にパフォーマンスに影響が出ることがあります。この影響は、書き込みレイテンシーに敏感なワークロードにとって重大な可能性があります。この機能により、スナップショットから大量のボリュームをすばやく復元できますが、同期レプリケーションのため、I/O 操作のレイテンシーが著しく増加する可能性があります。このレイテンシーはデータベースのパフォーマンスに影響を与える可能性があります。

CloudFormation を使用してシングル AZ 配置からマルチ AZ 配置に変更するための前提条件の設定

マルチ AZ 配置を使用するには、前提条件を含む最新の CloudFormation テンプレートを適用していることを確認するか、最新の前提条件を手動で設定する必要があります。最新の CloudFormation 前提条件テンプレートを既に適用している場合は、これらの手順をスキップできます。

CloudFormation を使用して RDS Custom for SQL Server マルチ AZ 配置の前提条件を設定するには

  1. CloudFormation コンソール (https://console.aws.amazon.com/cloudformation) を開きます。

  2. スタックの作成ウィザードを開始するには、シングル AZ 配置の作成に使用した既存のスタックを選択し、[更新] を選択します。

    [スタックの更新] ページが表示されます。

  3. [前提条件 – テンプレートの準備] で、[最新のテンプレートを置き換える] を選択します。

  4. [Specify template] (テンプレートの指定) ページで、以下を実行します。

    1. 最新の AWS CloudFormation テンプレートファイルをダウンロードします。リンク custom-sqlserver-onboard.zip のコンテキスト (右クリック) メニューを開き、[Save Link As] (名前を付けてリンク先を保存) を選択します。

    2. custom-sqlserver-onboard.json ファイルをコンピュータに保存し、解凍します。

    3. [テンプレートソース] で、[テンプレートファイルのアップロード] を選択します。

    4. [Choose file] (ファイルを選択) で、custom-sqlserver-onboard.json に移動して選択します。

  5. [次へ] をクリックします。

    [Specify stack details] (DB 詳細の指定) ページが表示されます。

  6. デフォルトのオプションを保持するには、[次へ] をクリックします。

    [詳細オプション] ページが表示されます。

  7. デフォルトのオプションを保持するには、[次へ] をクリックします。

  8. デフォルトのオプションを保持するには、[次へ] をクリックします。

  9. [変更の確認] ページで以下の操作を実行します。

    1. [機能] で、[AWS CloudFormation が IAM リソースを作成する可能性があることに同意する] チェックボックスをオンにします。

    2. [Submit] (送信) を選択します。

  10. 更新が成功したことを確認します。成功した場合のステータスは UPDATE_COMPLETE と表示されます。

更新に失敗すると、更新プロセスで指定された新しい設定はすべてロールバックされます。既存のリソースは引き続き使用できます。例えば、18 と 19 の番号が付いたネットワーク ACL ルールを追加しても、同じ番号の既存のルールが存在する場合、更新によって次のエラーが返されます。Resource handler returned message: "The network acl entry identified by 18 already exists. このシナリオでは、既存の ACL ルールを 18 未満の番号を使用するように変更してから、更新を再試行できます。

シングル AZ 配置をマルチ AZ 配置に手動で変更するための前提条件を設定する

重要

セットアップを簡単にするために、ネットワーク設定手順に記載されている最新の AWS CloudFormation テンプレートファイルを使用することをお勧めします。詳細については、「CloudFormation を使用してシングル AZ 配置からマルチ AZ 配置に変更するための前提条件の設定」を参照してください。

前提条件を手動で設定する場合は、以下のタスクを実行します。

  1. Amazon VPC コンソール (https://console.aws.amazon.com/vpc/) を開きます。

  2. [エンドポイント] を選択します。[Create Endpoint] (エンドポイントの作成) ページが表示されます。

  3. [サービスカテゴリ] で、[AWS のサービス] を選択します。

  4. [サービス][SQS] を検索します

  5. [VPC] で、RDS Custom for SQL Server DB インスタンスがデプロイされている VPC を選択します。

  6. [サブネット] で、RDS Custom for SQL Server DB インスタンスがデプロイされているサブネットを選択します。

  7. [セキュリティグループ] で、[-vpc-endpoint-sg] グループを選択します。

  8. [ポリシー][カスタム] を選択します。

  9. カスタムポリシーで、[AWS パーティション][リージョン][accountId]、および [IAM-Instance-role] を独自の値に置き換えます。

    { "Version": "2012-10-17", "Statement": [ { "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": "custom-sqlserver" } }, "Action": [ "SQS:SendMessage", "SQS:ReceiveMessage", "SQS:DeleteMessage", "SQS:GetQueueUrl" ], "Resource": "arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:do-not-delete-rds-custom-*", "Effect": "Allow", "Principal": { "AWS": "arn:${AWS::Partition}:iam::${AWS::AccountId}:role/{IAM-Instance-role}" } } ] }
  10. Amazon SQS にアクセスするアクセス許可を持つ [インスタンスプロファイル] を更新します。[AWS パーティション][リージョン][accountId] を独自の値に置き換えます。

    { "Sid": "SendMessageToSQSQueue", "Effect": "Allow", "Action": [ "SQS:SendMessage", "SQS:ReceiveMessage", "SQS:DeleteMessage", "SQS:GetQueueUrl" ], "Resource": [ { "Fn::Sub": "arn:${AWS::Partition}:sqs:${AWS::Region}:${AWS::AccountId}:do-not-delete-rds-custom-*" } ], "Condition": { "StringLike": { "aws:ResourceTag/AWSRDSCustom": "custom-sqlserver" } } } >
  11. Amazon RDS セキュリティグループのインバウンドおよびアウトバウンドルールを更新して、ポート 1120 を許可します。

    1. [セキュリティグループ] で、[-rds-custom-instance-sg] グループを選択します。

    2. [インバウンドルール] で、ソースの [-rds-custom-instance-sg] グループからのポート 1120 を許可するカスタム TCP ルールを作成します。

    3. [アウトバウンドルール] で、カスタム TCP ルールを作成して、送信先の [-rds-custom-instance-sg] グループにポート 1120 を許可します。

  12. DB インスタンスのソースサブネットの TCP ポート 0-65535 を許可するルールをプライベートネットワークのアクセスコントロールリスト (ACL) に追加します。

    注記

    インバウンドルールアウトバウンドルールを作成するときは、既存のルール番号の最大値を書き留めてください。作成する新しいルールのルール番号は 100 未満で、既存のルール番号と一致しない必要があります。

    1. [ネットワーク ACL] で、[-private-network-acl] グループを選択します。

    2. [インバウンドルール] で、privatesubnet1privatesubnet2 のソースを持つ TCP ポート 0-65535 を許可する すべての TCP ルールを作成します。

    3. [アウトバウンドルール] で、TCP ポート 0-65535 を宛先の privatesubnet1privatesubnet2 に許可するすべての TCP ルールを作成します。

RDS コンソール、AWS CLI、または RDS API を使用して変更します。

前提条件を満たしたら、RDS コンソール、AWS CLI、または RDS API を使用して、RDS Custom for SQL Server DB インスタンスをシングル AZ 配置からマルチ AZ 配置に変更できます。

既存の RDS Custom for SQL Server シングル AZ 配置をマルチ AZ 配置に変更するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. Amazon RDS コンソールで、[Databases (データベース)] を選択します。

    [データベース] ペインが表示されます。

  3. 変更する RDS Custom for SQL Server DB インスタンスを選択します。

  4. [アクション] で、[マルチ AZ 配置に変換] を選択します。

  5. 変更をすぐに適用するには、[確認] ページで [すぐに適用] を選択します。このオプションを選択してもダウンタイムは発生しませんが、パフォーマンスに影響する可能性があります。または、次のメンテナンスウィンドウの間に更新を適用することもできます。詳細については、「変更のスケジュール設定」を参照してください。

  6. [確認] ページで、[マルチ AZ に変換] を選択します。

AWS CLI を使用してマルチ AZ DB インスタンス配置に変換するには、modify-db-instance コマンドを呼び出して --multi-az オプションを設定します。DB インスタンス識別子と、変更する他のオプションの値を指定します。各オプションの詳細については、「DB インスタンスの設定」を参照してください。

次のコードは、--multi-az オプションを含むことで mycustomdbinstance を変更します。変更は、--no-apply-immediately を使用して次のメンテナンスウィンドウ中に適用されます。今すぐ変更を適用するには、--apply-immediately を使用します。詳細については、「変更のスケジュール設定」を参照してください。

Linux、macOS、Unix の場合:

aws rds modify-db-instance \ --db-instance-identifier mycustomdbinstance \ --multi-az \ --no-apply-immediately

Windows の場合:

aws rds modify-db-instance ^ --db-instance-identifier mycustomdbinstance ^ --multi-az \ ^ --no-apply-immediately

RDS API を使用してマルチ AZ DB インスタンス配置に変換するには、ModifyDBInstance オペレーションを呼び出し、MultiAZ パラメータを true に設定します。

RDS Custom for SQL Server マルチ AZ 配置からシングル AZ 配置への変更

既存の RDS Custom for SQL Server DB インスタンスをマルチ AZ 配置からシングル AZ 配置に変更することができます。

RDS Custom for SQL Server DB インスタンスをマルチ AZ 配置からシングル AZ 配置に変更するには
  1. AWS Management Console にサインインし、Amazon RDS コンソール (https://console.aws.amazon.com/rds/) を開きます。

  2. Amazon RDS コンソールで、[Databases (データベース)] を選択します。

    [データベース] ペインが表示されます。

  3. 変更する RDS Custom for SQL Server DB インスタンスを選択します。

  4. [マルチ AZ 配置] で、[いいえ] を選択します。

  5. 変更をすぐに適用するには、[確認] ページで [すぐに適用] を選択します。このオプションを選択してもダウンタイムは発生しませんが、パフォーマンスに影響する可能性があります。または、次のメンテナンスウィンドウの間に更新を適用することもできます。詳細については、「変更のスケジュール設定」を参照してください。

  6. [確認] ページで、[DB インスタンスの変更] を選択します。

AWS CLI を使用してマルチ AZ 配置をシングル AZ 配置に変更するには、modify-db-instance コマンドを呼び出し、--no-multi-az オプションを含めます。DB インスタンス識別子と、変更する他のオプションの値を指定します。各オプションの詳細については、「DB インスタンスの設定」を参照してください。

次のコードは、--no-multi-az オプションを含むことで mycustomdbinstance を変更します。変更は、--no-apply-immediately を使用して次のメンテナンスウィンドウ中に適用されます。今すぐ変更を適用するには、--apply-immediately を使用します。詳細については、「変更のスケジュール設定」を参照してください。

Linux、macOS、Unix の場合:

aws rds modify-db-instance \ --db-instance-identifier mycustomdbinstance \ --no-multi-az \ --no-apply-immediately

Windows の場合:

aws rds modify-db-instance ^ --db-instance-identifier mycustomdbinstance ^ --no-multi-az \ ^ --no-apply-immediately

RDS API を使用してマルチ AZ 配置をシングル AZ 配置に変更するには、ModifyDBInstance オペレーションを呼び出し、MultiAZ パラメータを false に設定します。

RDS Custom for SQL Server マルチ AZ 配置のフェイルオーバープロセス

DB インスタンスの計画的または計画外の停止がインフラストラクチャの欠陥に起因する場合、マルチ AZ を有効にしていると、Amazon RDS は別のアベイラビリティーゾーンのスタンバイレプリカに自動的に切り替わります。     フェイルオーバーが完了するまでにかかる時間は、プライマリ DB インスタンスが使用できなくなったときのデータベースアクティビティおよびその他の条件によって異なります。フェイルオーバー時間は通常 60~120 秒です。ただし、大規模なトランザクションや長期にわたる復旧プロセスによって、フェイルオーバー時間が増加する場合があります。フェイルオーバーが完了してから、新しいアベイラビリティーゾーンが RDS コンソールに表示されるまでさらに時間がかかる場合があります。

注記

フェイルオーバーを使用して DB インスタンスを再起動するときに手動でフェイルオーバーを強制的に実行することができます。DB インスタンスの再起動方法については、「 DB インスタンスの再起動」を参照してください。

Amazon RDS はフェイルオーバーを自動的に処理するため、管理者が操作しなくても可能な限りすみやかにデータベース操作を再開できます。次の表に記載されている条件のいずれかが発生した場合、プライマリ DB インスタンスがスタンバイレプリカに自動的に切り替わります。これらのフェイルオーバーの理由は、RDS イベントログで確認できます。

フェイルオーバーした理由 説明

The operating system for the RDS Custom for SQL Server Multi-AZ DB instance is being patched in an offline operation

OS パッチまたはセキュリティ更新プログラムのメンテナンス期間中に、フェイルオーバーがトリガーされました。詳細については、「DB インスタンスのメンテナンス」を参照してください。

The primary host of the RDS Custom for SQL Server Multi-AZ DB instance is unhealthy.

マルチ AZ DB インスタンスのデプロイは、障害のあるプライマリ DB インスタンスを検出し、フェイルオーバーしました。

The primary host of the RDS Custom for SQL Server Multi-AZ DB instance is unreachable due to loss of network connectivity.

RDS モニタリングは、プライマリ DB インスタンスへのネットワーク到達可能性による障害を検出し、フェイルオーバーをトリガーしました。

The RDS Custom for SQL Server Multi-AZ DB instance was modified by the customer.

DB インスタンスの変更により、フェイルオーバーがトリガーされました。詳細については、「RDS Custom for SQL Server DB インスタンスの変更」を参照してください。

The storage volume of the primary host of the RDS Custom for SQL Server Multi-AZ DB instance experienced a failure.

マルチ AZ DB インスタンスのデプロイは、プライマリ DB インスタンスでストレージの問題を検出し、フェイルオーバーしました。

The user requested a failover of the RDS Custom for SQL Server Multi-AZ DB instance.

RDS Custom for SQL Server Multi-AZ DB インスタンスがフェイルオーバーにより再起動されました。詳細については、「 DB インスタンスの再起動」を参照してください。

The RDS Custom for SQL Server Multi-AZ primary DB instance is busy or unresponsive.

プライマリ DB インスタンスが応答しません。次の手順を実行することをお勧めします。

  • イベントログと CloudWatch Logs を調べて、CPU、メモリ、またはスワップ領域の使用量が多すぎるかどうかを調べます。詳細については、「Amazon RDS イベント通知の操作」を参照してください。

  • Amazon RDS イベントでトリガーするルールを作成します。詳細については、「Amazon RDS イベントでトリガーするルールの作成」を参照してください。

  • ワークロードを評価して、適切な DB インスタンスクラスを使用しているかどうかを判断します。詳細については、「 DB インスタンスクラス」を参照してください。

マルチ AZ DB インスタンスがフェイルオーバーされたかどうかを判断するには、次を実行します。

  • フェイルオーバーがスタートされたことを電子メールまたはSMSで通知するようにDBイベントサブスクリプションを設定します。 イベントの詳細については、「Amazon RDS イベント通知の操作」を参照してください。

  • RDS コンソールまたは API オペレーションを使用して DB イベントを表示します。

  • RDS コンソール、CLI、または API オペレーションを使用して、RDS Custom for SQL Server Multi-AZ DB インスタンスのデプロイの現在の状態を表示します。

RDS Custom for SQL Server Multi-AZ マルチ AZ 配置を使用するアプリケーションでの Time to live (TTL) 設定

フェイルオーバーメカニズムでは、スタンバイ DB インスタンスをポイントするように DB インスタンスのドメインネームシステム (DNS) レコードが自動的に変更されます。したがって、DB インスタンスへの既存の接続の再確立が必要になります。DNS キャッシュ Time to live (TTL) 設定値が低いことを確認し、アプリケーションが DNS を長期間キャッシュしないことを確認します。TTL 値が高いと、フェイルオーバー後にアプリケーションが DB インスタンスにすぐに再接続できなくなる可能性があります。