

# 在 Amazon Aurora 中创建蓝绿部署
<a name="blue-green-deployments-creating"></a>

RDS 将蓝色环境的拓扑和功能复制到暂存区域。如果蓝色数据库实例具有只读副本，它们将被复制为绿色实例的副本。所有绿色副本分配得到的存储与绿色主实例一致，而其他存储参数则继承自蓝色副本。

创建蓝绿部署时，您需要指定要在部署中复制的数据库集群。您选择的数据库集群是生产数据库集群，它将成为蓝色环境中的数据库集群。RDS 将蓝色环境的拓扑及其配置的功能复制到暂存区域。数据库集群复制到绿色环境，RDS 配置从蓝色环境中的数据库集群到绿色环境中的数据库集群的复制。RDS 还复制数据库集群中的所有数据库实例。

**Topics**
+ [准备进行蓝绿部署](#blue-green-deployments-creating-preparing)
+ [创建蓝绿部署时指定更改](#blue-green-deployments-creating-changes)
+ [创建蓝绿部署](#blue-green-deployments-creating-create)
+ [创建蓝绿部署的设置](#create-blue-green-settings)

## 准备进行蓝绿部署
<a name="blue-green-deployments-creating-preparing"></a>

在创建蓝绿部署之前，必须执行某些步骤，具体取决于您的 Aurora 数据库集群运行的引擎。

**Topics**
+ [准备 Aurora MySQL 数据库集群以进行蓝绿部署](#blue-green-deployments-creating-preparing-mysql)
+ [准备 Aurora PostgreSQL 数据库集群以进行蓝绿部署](#blue-green-deployments-creating-preparing-postgres)
+ [准备 Aurora Global Database 数据库集群以进行蓝绿部署](#blue-green-deployments-creating-preparing-agd)

### 准备 Aurora MySQL 数据库集群以进行蓝绿部署
<a name="blue-green-deployments-creating-preparing-mysql"></a>

在为 Aurora MySQL 数据库集群创建蓝绿部署之前，该集群必须与开启[二进制日志记录](USER_LogAccess.MySQL.BinaryFormat.md)（`binlog_format`）的自定义数据库集群参数组相关联。从蓝色环境复制到绿色环境需要二进制日志记录。尽管任何二进制日志格式都有效，但我们建议使用 `ROW` 以降低复制不一致的风险。有关创建自定义数据库集群参数组和设置参数的信息，请参阅[Amazon Aurora 数据库集群的数据库集群参数组](USER_WorkingWithDBClusterParamGroups.md)。

**注意**  
启用二进制日志记录会增加集群的写入磁盘 I/O 操作数。您可以使用 `VolumeWriteIOPs` CloudWatch 指标监控 IOPS 使用情况。

启用二进制日志记录后，请务必重启数据库集群以使您的更改生效。蓝绿部署*要求*写入器实例与数据库集群参数组同步，否则创建将失败。有关更多信息，请参阅 [重启 Aurora 集群内的数据库实例](aurora-reboot-db-instance.md)。

此外，建议将二进制日志保留期更改为 `NULL` 以外的其他值，以防止二进制日志文件被清除。有关更多信息，请参阅 [设置和显示二进制日志配置](mysql-stored-proc-configuring.md)。

### 准备 Aurora PostgreSQL 数据库集群以进行蓝绿部署
<a name="blue-green-deployments-creating-preparing-postgres"></a>

在为 Aurora PostgreSQL 数据库集群创建蓝绿部署之前，请务必执行以下操作：
+ 将集群与启用逻辑复制（`rds.logical_replication`）的自定义数据库集群参数组相关联。从蓝色环境复制到绿色环境需要逻辑复制。

  启用逻辑复制时，还需要调整某些集群参数，例如 `max_replication_slots`、`max_logical_replication_workers` 和 `max_worker_processes`。有关启用逻辑复制和调整这些参数的说明，请参阅[为 Aurora PostgreSQL 数据库集群设置逻辑复制](AuroraPostgreSQL.Replication.Logical.Configure.md)。

  此外，请确保 `synchronous_commit` 参数设置为 `on`。

  配置所需参数后，重启数据库集群以使您的更改生效。蓝绿部署*要求*写入器实例与数据库集群参数组同步，否则创建将失败。有关更多信息，请参阅 [重启 Aurora 集群内的数据库实例](aurora-reboot-db-instance.md)。
+ 确认您的数据库集群运行的 Aurora PostgreSQL 版本与蓝绿部署兼容。有关兼容版本列表，请参阅 [Aurora PostgreSQL 的蓝绿部署](Concepts.Aurora_Fea_Regions_DB-eng.Feature.BlueGreenDeployments.md#Concepts.Aurora_Fea_Regions_DB-eng.Feature.BlueGreenDeployments.apg)。
+ 确保数据库集群中的所有表都有主键。PostgreSQL 逻辑复制不允许对没有主键的表执行 UPDATE 或 DELETE 操作。

### 准备 Aurora Global Database 数据库集群以进行蓝绿部署
<a name="blue-green-deployments-creating-preparing-agd"></a>

在为 Aurora Global Database 数据库集群创建蓝绿部署之前，请注意以下几点：
+ 所有操作都必须从与 Global Database 的写入器集群相同的区域启动。
+ 参数组配置：
  + 绿色环境要么使用您指定的新参数组，要么使用与蓝色集群相同的参数组（默认）。
  + 自定义参数组将复制到绿色环境。
  + 如果辅助区域中不存在指定的参数组，则该辅助区域中的默认参数组将用于绿色环境。

## 创建蓝绿部署时指定更改
<a name="blue-green-deployments-creating-changes"></a>

创建蓝绿部署时，可以在绿色环境中对数据库集群进行以下更改：

部署后，您可以在绿色环境中对数据库集群及其数据库实例进行其他修改。例如，您可以指定更高的引擎版本或不同的参数组。

有关修改数据库集群的信息，请参阅[修改 Amazon Aurora 数据库集群](Aurora.Modifying.md)。

**Topics**
+ [指定更高的引擎版本](#blue-green-deployments-engine-version)
+ [指定其它数据库参数组](#blue-green-deployments-parameters)

### 指定更高的引擎版本
<a name="blue-green-deployments-engine-version"></a>

如果要测试数据库引擎升级，可以指定更高的引擎版本。切换后，数据库将升级到您指定的主要或次要数据库引擎版本。

### 指定其它数据库参数组
<a name="blue-green-deployments-parameters"></a>

指定与数据库集群使用的数据库集群参数组不同的数据库集群参数组。您可以测试参数更改如何影响绿色环境中的数据库集群，或者在升级时为新的主要数据库引擎版本指定参数组。

如果您指定不同的数据库集群参数组，则指定的参数组将与绿色环境中的数据库集群相关联。如果您未指定其他数据库集群参数组，则绿色环境中的数据库集群将和与蓝色数据库集群相同的参数组关联。

## 创建蓝绿部署
<a name="blue-green-deployments-creating-create"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 创建蓝绿部署。

### 控制台
<a name="blue-green-deployments-creating-console"></a>

**创建蓝绿部署**

1. 登录 AWS 管理控制台 并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases**（数据库），然后选择要复制到绿色环境的数据库集群。

1. 依次选择**操作**和**创建蓝绿部署**。

   将出现**创建蓝绿部署**页面。  
![\[创建蓝绿部署\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/AuroraUserGuide/images/blue-green-deployment-create-aurora.png)

1. 查看蓝色数据库标识符。确保它们与您在蓝色环境中预期的数据库实例相匹配。如果不符合预期，请选择 **Cancel**（取消）。

1. 对于**蓝绿部署名称**，输入蓝绿部署的名称。

1. 在剩余部分中，指定绿色环境的设置。有关每项设置的信息，请参阅[创建蓝绿部署的设置](#create-blue-green-settings)。

   部署后，可以在绿色环境中对数据库进行其他修改。

1. 选择**创建**。

### AWS CLI
<a name="blue-green-deployments-creating-cli"></a>

要使用 AWS CLI 创建蓝绿部署，请使用 [create-blue-green-deployment](https://docs.aws.amazon.com/cli/latest/reference/rds/create-blue-green-deployment.html) 命令。有关所有可用选项的信息，请参阅[创建蓝绿部署的设置](#create-blue-green-settings)。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds create-blue-green-deployment \
    --blue-green-deployment-name aurora-blue-green-deployment \
    --source arn:aws:rds:us-east-2:123456789012:cluster:auroradb \
    --target-engine-version 8.0 \
    --target-db-cluster-parameter-group-name mydbclusterparametergroup
```
对于：Windows  

```
aws rds create-blue-green-deployment ^
    --blue-green-deployment-name aurora-blue-green-deployment ^
    --source arn:aws:rds:us-east-2:123456789012:cluster:auroradb ^
    --target-engine-version 8.0 ^
    --target-db-cluster-parameter-group-name mydbclusterparametergroup
```

### RDS API
<a name="blue-green-deployments-creating-api"></a>

要使用 Amazon RDS API 创建蓝绿部署，请使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateBlueGreenDeployment.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateBlueGreenDeployment.html) 操作。有关各选项的信息，请参阅 [创建蓝绿部署的设置](#create-blue-green-settings)。

## 创建蓝绿部署的设置
<a name="create-blue-green-settings"></a>

下表说明创建蓝绿部署时可供您选择的设置。有关 AWS CLI 选项的更多信息，请参阅 [create-blue-green-deployment](https://docs.aws.amazon.com/cli/latest/reference/rds/create-blue-green-deployment.html)。有关 RDS API 参数的更多信息，请参阅 [CreateBlueGreenDeployment](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateBlueGreenDeployment.html)。


| 控制台设置 | 设置说明 | CLI 选项和 RDS API 参数 | 
| --- | --- | --- | 
|  **蓝绿部署标识符**  |  蓝绿部署的名称。  |  **CLI 选项：** `--blue-green-deployment-name` **API 参数：**  `BlueGreenDeploymentName`  | 
| 蓝色数据库标识符 |  要复制到绿色环境的集群的标识符。使用 CLI 或 API 时，请指定集群的 Amazon 资源名称（ARN）。  |  **CLI 选项：** `--source` **API 参数：** `Source`  | 
|  绿色数据库的数据库集群参数组  | 与绿色环境中的数据库相关联的参数组。 |  **CLI 选项：**  `--target-db-cluster-parameter-group-name` **API 参数：**  `TargetDBClusterParameterGroupName`  | 
|  **绿色数据库的引擎版本**  |  将绿色环境中的集群升级到指定的数据库引擎版本。 如果您选择使用逻辑复制的 Aurora PostgreSQL 数据库集群，请回顾并确认逻辑复制的限制。有关更多信息，请参阅 [蓝绿部署的特定于逻辑复制的限制](blue-green-deployments-considerations.md#blue-green-deployments-limitations-postgres)。  |  **CLI 选项：** `--target-engine-version` **RDS API 参数：** `TargetEngineVersion`  | 