创建蓝绿部署 - Amazon Aurora
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

创建蓝绿部署

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

准备进行蓝绿部署

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

准备 Aurora MySQL 数据库集群以进行蓝绿部署

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

注意

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

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

此外,建议将二进制日志保留期更改为 NULL 以外的其他值,以防止二进制日志文件被清除。有关更多信息,请参阅配置

准备 Aurora PostgreSQL 数据库集群以进行蓝绿部署

在为 Aurora PostgreSQL 数据库集群创建蓝绿部署之前,请务必执行以下操作:

  • 将集群与启用逻辑复制(rds.logical_replication)的自定义数据库集群参数组相关联。从蓝色环境复制到绿色环境需要逻辑复制。

    启用逻辑复制时,还需要调整某些集群参数,例如 max_replication_slotsmax_logical_replication_workersmax_worker_processes。有关启用逻辑复制和调整这些参数的说明,请参阅为 Aurora PostgreSQL 数据库集群设置逻辑复制

    此外,请确保 synchronous_commit 参数设置为 on

    配置所需参数后,请务必重启数据库集群以使您的更改生效。蓝绿部署要求写入器实例与数据库集群参数组同步,否则创建将失败。有关更多信息,请参阅重启 Aurora 集群内的数据库实例

  • 确保您的数据库实例运行的 Aurora PostgreSQL 版本与蓝绿部署兼容。有关兼容版本列表,请参阅 Aurora PostgreSQL 的蓝绿部署

  • 确保数据库集群中的所有表都有主键。PostgreSQL 逻辑复制不允许对没有主键的表执行 UPDATE 或 DELETE 操作。

  • 如果您使用的是触发器,请确保它们不会影响名称以“rds”开头的 pg_catalog.pg_publicationpg_catalog.pg_subscriptionpg_catalog.pg_replication_slots 对象的创建、更新及删除。

创建蓝绿部署时指定更改

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

部署后,您可以在绿色环境中对数据库集群及其数据库实例进行其他修改。例如,您可以对数据库进行模式更改,或者更改绿色环境中一个或多个数据库实例使用的数据库实例类。

有关修改数据库集群的信息,请参阅修改 Amazon Aurora 数据库集群

指定更高的引擎版本

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

指定其它数据库参数组

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

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

创建蓝绿部署

您可以使用 Amazon Web Services Management Console、Amazon CLI 或 RDS API 创建蓝绿部署。

创建蓝绿部署
  1. 登录 Amazon Web Services Management Console 并通过以下网址打开 Amazon RDS 控制台:https://console.aws.amazon.com/rds/

  2. 在导航窗格中,选择 Databases(数据库),然后选择要复制到绿色环境的数据库集群

  3. 依次选择操作创建蓝绿部署

    如果您选择 Aurora PostgreSQL 数据库集群,请查看并确认逻辑复制限制。有关更多信息,请参阅蓝绿部署的 PostgreSQL 逻辑复制的限制

    将出现 Create Blue/Green Deployment(创建蓝绿部署)页面。

    创建蓝绿部署
  4. 查看蓝色数据库标识符。确保它们与您在蓝色环境中预期的数据库实例相匹配。如果不符合预期,请选择 Cancel(取消)。

  5. 对于 Blue/Green Deployment identifier(蓝绿部署标识符),输入蓝绿部署的名称。

  6. (可选)对于 Blue/Green Deployment settings(蓝绿部署设置),指定绿色环境的设置:

    • 如果要测试数据库引擎版本升级,请选择数据库引擎版本。

    • 选择要与绿色环境中的数据库集群相关联的数据库集群参数组。

    • 选择要与绿色环境中的数据库实例相关联的数据库参数组。

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

  7. 选择创建暂存环境

要使用 Amazon CLI 创建蓝绿部署,请使用带有以下选项的 create-blue-green-deployment 命令:

  • --blue-green-deployment-name – 指定蓝绿部署的名称。

  • --source – 指定要复制的数据库集群的 ARN。

  • --target-engine-version – 如果要在绿色环境中测试数据库引擎版本升级,请指定引擎版本。此选项将绿色环境中的数据库集群升级到指定的数据库引擎版本。

    如果未指定,则使用与蓝色环境中的数据库集群相同的引擎版本创建绿色环境中的数据库集群。

  • --target-db-cluster-parameter-group-name – 指定要与绿色环境中的数据库集群相关联的数据库集群参数组。

  • --target-db-parameter-group-name – 指定要与绿色环境中的数据库实例相关联的数据库参数组。

例 创建蓝绿部署

对于 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

要使用 Amazon RDS API 创建蓝绿部署,请使用带有以下参数的 CreateBlueGreenDeployment 操作:

  • BlueGreenDeploymentName – 指定蓝绿部署的名称。

  • Source – 指定要复制到绿色环境的数据库集群的 ARN。

  • TargetEngineVersion – 如果要在绿色环境中测试数据库引擎版本升级,请指定引擎版本。此选项将绿色环境中的数据库集群升级到指定的数据库引擎版本。

    如果未指定,则使用与蓝色环境中的数据库集群相同的引擎版本创建绿色环境中的数据库集群。

  • TargetDBClusterParameterGroupName – 指定要与绿色环境中的数据库集群相关联的数据库集群参数组。

  • TargetDBParameterGroupName – 指定要与绿色环境中的数据库实例相关联的数据库参数组。