

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 將 RDS Custom for SQL Server 單一可用區部署修改為多可用區部署
<a name="custom-sqlserver-multiaz.modify-saztomaz"></a>

您可以將現有 RDS Custom for SQL Server 資料庫執行個體從單一可用區部署修改為多可用區部署。當您修改資料庫執行個體時，Amazon RDS 會執行多個動作：
+ 拍攝主要資料庫執行個體的快照。
+ 從快照為待命複本建立新磁碟區。這些磁碟區會在背景中初始化，並在資料完全初始化之後達到最大磁碟區效能。
+ 開啟主要和次要資料庫執行個體之間的同步區塊層級複本。

**重要**  
建議您避免在尖峰活動期間，將 RDS Custom for SQL Server 資料庫執行個體從單一可用區修改為生產資料庫執行個體上的多可用區部署。

AWS 當您從單一可用區轉換為異地同步備份時， 會使用快照來建立待命執行個體，以避免停機時間，但在轉換為異地同步備份期間和之後，效能可能會受到影響。對於對寫入延遲敏感的工作負載而言，這個影響可能很重大。雖然此功能可以從快照中快速還原大量磁碟區，但由於是同步複寫，可能會導致 I/O 作業延遲。此延遲可能會影響您的資料庫效能。

**注意**  
如果您在 2024 年 8 月 29 日之前建立 RDS Custom for SQL Server 資料庫執行個體，在修改之前，請修補至最新的次要版本。  
針對 SQL Server 2019 執行個體，請將資料庫引擎版本升級至 `15.00.4410.1.v1` 或更高版本。
針對 SQL Server 2022 執行個體，請將資料庫引擎版本升級至 `16.00.4150.1.v1` 或更高版本。

**Topics**
+ [設定先決條件，以使用 CloudFormation 將單一可用區修改為多可用區部署](#custom-sqlserver-multiaz.modify-saztomaz-prereqs.cf)
+ [設定先決條件，以手動將單一可用區修改為多可用區部署](#custom-sqlserver-multiaz.modify-saztomaz-prereqs.manual)
+ [使用 RDS 主控台、 AWS CLI 或 RDS API 修改 。](#custom-sqlserver-multiaz.modify-saztomaz-afterprereqs)

## 設定先決條件，以使用 CloudFormation 將單一可用區修改為多可用區部署
<a name="custom-sqlserver-multiaz.modify-saztomaz-prereqs.cf"></a>

若要使用多可用區部署，請確保您已套用具有先決條件的最新 CloudFormation 範本，或手動設定最新的先決條件。若您已套用最新的 CloudFormation 先決條件範本，可以略過這些步驟。

使用 CloudFormation 設定 RDS Custom for SQL Server 多可用區部署先決條件

1. 開啟位於 https：//[https://console.aws.amazon.com/cloudformation](https://console.aws.amazon.com/cloudformation/) 的 CloudFormation 主控台。

1. 若要啟動「建立堆疊」精靈，請選取您用來建立單一可用區部署的現有堆疊，然後選擇**更新**。

   **建立堆疊**頁面隨即出現。

1. 對於**先決條件 - 準備範本**，請選擇**取代現有範本**。

1. 針對 **Specify template** 執行下列操作：

   1. 下載最新的 CloudFormation 範本檔案。開啟連結 [custom-sqlserver-onboard.zip](samples/custom-sqlserver-onboard.zip) 的內容 (滑鼠右鍵) 功能表，然後選擇 **Save Link As** (另存連結為)。

   1. 將 `custom-sqlserver-onboard.json` 檔案儲存並擷取到您的電腦。

   1. 針對 **Template source** (範本來源)，選擇 **Upload a template file** (上傳範本檔案)。

   1. 針對 **Choose file** (選擇檔案)，導覽至 `custom-sqlserver-onboard.json` 並加以選擇。

1. 選擇**下一步**。

   **Specify stack details** (指定堆疊詳細資訊) 頁面隨即出現。

1. 若要保留預設選項，請選擇 **Next** (下一步)。

   **進階選項**頁面旋即出現。

1. 若要保留預設選項，請選擇 **Next** (下一步)。

1. 若要保留預設選項，請選擇 **Next** (下一步)。

1. 在**檢閱變更**頁面上，執行下列動作：

   1. 針對 **Capabilities (功能)**，選取 ****I acknowledge that CloudFormation might create IAM resources with custom names**** (確認可能使用自訂名稱建立 IAM 資源) 核取方塊。

   1. 選擇**提交**。

1. 確認更新是否成功。成功作業的狀態會顯示 `UPDATE_COMPLETE`。

如果更新失敗，更新過程指定的任何新組態都會復原。現有的資源仍然可以使用。例如，如果您新增編號為 18 和 19 的網路 ACL 規則，但現有規則的編號相同，則更新會傳回下列錯誤：`Resource handler returned message: "The network acl entry identified by 18 already exists.` 在此情況中，您可以將現有 ACL 規則修改為使用小於 18 的數字，然後重試更新。

## 設定先決條件，以手動將單一可用區修改為多可用區部署
<a name="custom-sqlserver-multiaz.modify-saztomaz-prereqs.manual"></a>

**重要**  
為了簡化設定，我們建議您使用網路設定說明中提供的最新 CloudFormation 範本檔案。如需詳細資訊，請參閱[設定先決條件，以使用 CloudFormation 將單一可用區修改為多可用區部署](#custom-sqlserver-multiaz.modify-saztomaz-prereqs.cf)。

如果您選擇手動設定先決條件，請執行以下任務。

1. 在 [https://console.aws.amazon.com/vpc/](https://console.aws.amazon.com/vpc/) 開啟 Amazon VPC 主控台。

1. 選擇**端點**。**Create Endpoint** (建立端點) 頁面隨即出現。

1. 在**服務類別**中，選擇​ **AWS 服務**。

1. 在**服務**中，搜尋 *SQS*

1. 在 **VPC** 中，選擇部署 RDS Custom for SQL Server 資料庫執行個體的 VPC。

1. 在**子網路**中，選擇部署 RDS Custom for SQL Server 資料庫執行個體的子網路。

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. 針對**輸入規則**，請建立**自訂 TCP** 規則，以允許來自來源 *-rds-custom-instance-sg* 群組的連接埠 *1120*。

   1. 針對**輸出規則**，請建立**自訂 TCP** 規則，以允許到目的地 *-rds-custom-instance-sg* 群組的連接埠 *1120*。

1. 在您的私人網路存取控制清單 (ACL) 中新增規則，以允許資料庫執行個體的來源子網路使用 TCP 連接埠 `0-65535`。
**注意**  
建立**輸入規則**和**輸出規則**時，請記下現有最高的**規則編號**。您建立的新規則必須具有小於 100 的**規則編號**，且不重複任何現有的**規則編號**。

   1. 在**網路 ACL** 中，選擇 *-private-network-acl* 群組。

   1. 針對**輸入規則**，請建立**所有 TCP** 規則，以允許來自來源 *privatesubnet1* 和 *privatesubnet2* 的 TCP 連接埠 `0-65535`。

   1. 針對**輸出規則**，請建立**所有 TCP** 規則，以允許到目的地 *privatesubnet1* 和 *privatesubnet2* 的 TCP 連接埠 `0-65535`。

## 使用 RDS 主控台、 AWS CLI 或 RDS API 修改 。
<a name="custom-sqlserver-multiaz.modify-saztomaz-afterprereqs"></a>

完成先決條件後，您可以使用 RDS 主控台、 AWS CLI 或 RDS API，將 RDS Custom for SQL Server 資料庫執行個體從單一可用區修改為多可用區部署。

### 主控台
<a name="custom-sqlserver-multiaz.modify-saztomaz.Console"></a>

**將現有 RDS Custom for SQL Server 單一可用區修改為多可用區部署**

1. 登入 AWS 管理主控台 ，並在 [https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)：// 開啟 Amazon RDS 主控台。

1. 在 Amazon RDS 主控台，選擇 **Databases (資料庫)**。

   **Databases (資料庫)** 窗格隨即出現。

1. 選擇您想要修改的 RDS Custom for SQL Server 資料庫執行個體。

1. 從**動作**中，選擇**轉換為多可用區部署**。

1. 在**確認**頁面上，選擇**立即套用**，來立即套用變更。選擇此選項並不會產生停機時間，但可能會對效能產生影響。或者，您也可以選擇在下個維護時段套用更新。如需詳細資訊，請參閱[使用排程修改設定](USER_ModifyInstance.ApplyImmediately.md)。

1. 在**確認**頁面上，選擇**轉換為多可用區**。

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

若要使用 轉換為多可用區域資料庫執行個體部署 AWS CLI，請呼叫 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令並設定 `--multi-az`選項。指定資料庫執行個體識別符，以及您要修改的其他選項值。如需每個選項的詳細資訊，請參閱[資料庫執行個體的設定](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 轉換為多個可用區資料庫執行個體部署，請呼叫 [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 操作，並將 `MultiAZ` 參數設為 true。