

# RDS Custom for SQL Server シングル AZ 配置からマルチ AZ 配置への変更
<a name="custom-sqlserver-multiaz.modify-saztomaz"></a>

既存の 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 操作のレイテンシーが著しく増加する可能性があります。このレイテンシーはデータベースのパフォーマンスに影響を与える可能性があります。

**注記**  
2024 年 8 月 29 日より前に RDS Custom for SQL Server DB インスタンスを作成した場合は、変更前に最新のマイナーバージョンにパッチを適用してください。  
SQL Server 2019 インスタンスの場合は、DB エンジンのバージョンを `15.00.4410.1.v1` 以降にアップグレードします。
SQL Server 2022 インスタンスの場合は、DB エンジンのバージョンを `16.00.4150.1.v1` 以降にアップグレードします。

**Topics**
+ [CloudFormation を使用してシングル AZ 配置からマルチ AZ 配置に変更するための前提条件の設定](#custom-sqlserver-multiaz.modify-saztomaz-prereqs.cf)
+ [シングル AZ 配置をマルチ AZ 配置に手動で変更するための前提条件を設定する](#custom-sqlserver-multiaz.modify-saztomaz-prereqs.manual)
+ [RDS コンソール、AWS CLI、または RDS API を使用して変更します。](#custom-sqlserver-multiaz.modify-saztomaz-afterprereqs)

## CloudFormation を使用してシングル AZ 配置からマルチ AZ 配置に変更するための前提条件の設定
<a name="custom-sqlserver-multiaz.modify-saztomaz-prereqs.cf"></a>

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

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

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

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

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

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

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

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

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

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

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

1. [**次へ**] を選択します。

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

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

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

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

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

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

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

   1. [**Submit**] を選択してください。

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

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

## シングル AZ 配置をマルチ AZ 配置に手動で変更するための前提条件を設定する
<a name="custom-sqlserver-multiaz.modify-saztomaz-prereqs.manual"></a>

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

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

1. Amazon VPC コンソールの [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) を開いてください。

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

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

1. **[サービス]** で *[SQS]* を検索します

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

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

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

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

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

------
#### [ JSON ]

****  

   ```
   {
       "Version":"2012-10-17",		 	 	 
       "Statement": [
           {
               "Condition": {
                   "StringLike": {
                       "aws:ResourceTag/AWSRDSCustom": "custom-sqlserver"
                   }
               },
               "Action": [
                   "SQS:SendMessage",
                   "SQS:ReceiveMessage",
                   "SQS:DeleteMessage",
                   "SQS:GetQueueUrl"
               ],
               "Resource": "arn:aws:sqs:us-east-1:111122223333:do-not-delete-rds-custom-*",
               "Effect": "Allow",
               "Principal": {
                   "AWS": "arn:aws:iam::111122223333:role/{IAM-Instance-role}"
               }
           }
       ]
   }
   ```

------

1.  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"
         }
       }
     } 
                           >
   ```

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

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

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

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

1. DB インスタンスのソースサブネットの TCP ポート `0-65535` を許可するルールをプライベートネットワークのアクセスコントロールリスト (ACL) に追加します。
**注記**  
**インバウンドルール**と**アウトバウンドルール**を作成するときは、既存の**ルール番号**の最大値を書き留めてください。作成する新しいルールの**ルール番号**は 100 未満で、既存の**ルール番号**と一致しない必要があります。

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

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

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

## RDS コンソール、AWS CLI、または RDS API を使用して変更します。
<a name="custom-sqlserver-multiaz.modify-saztomaz-afterprereqs"></a>

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

### コンソール
<a name="custom-sqlserver-multiaz.modify-saztomaz.Console"></a>

**既存の RDS Custom for SQL Server シングル AZ 配置をマルチ AZ 配置に変更するには**

1. AWS マネジメントコンソール にサインインし、Amazon RDS コンソール ([https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)) を開きます。

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

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

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

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

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

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

### AWS CLI
<a name="custom-sqlserver-multiaz.modify-saztomaz.CLI"></a>

AWS CLI を使用してマルチ AZ DB インスタンス配置に変換するには、[modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) コマンドを呼び出して `--multi-az` オプションを設定します。DB インスタンス識別子と、変更する他のオプションの値を指定します。各オプションの詳細については、「」を参照してください。[DB インスタンスの設定](USER_ModifyInstance.Settings.md)

**Example**  
次のコードは、`--multi-az` オプションを含むことで `mycustomdbinstance` を変更します。変更は、`--no-apply-immediately` を使用して次のメンテナンスウィンドウ中に適用されます。今すぐ変更を適用するには、`--apply-immediately` を使用します。詳細については、「[スケジュール変更設定の使用](USER_ModifyInstance.ApplyImmediately.md)」を参照してください。  
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
<a name="custom-sqlserver-multiaz.modify-saztomaz.API"></a>

RDS API を使用してマルチ AZ DB インスタンス配置に変換するには、[ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) オペレーションを呼び出し、`MultiAZ` パラメータを true に設定します。