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

创建蓝绿部署

创建蓝绿部署时,您需要指定要在部署中复制的源数据库实例。您选择的数据库实例是生产数据库实例,它将成为蓝色环境中的主数据库实例。此数据库实例复制到绿色环境,RDS 配置从蓝色环境中的数据库实例到绿色环境中的数据库实例的复制。

RDS 将蓝色环境的拓扑及其配置的功能复制到暂存区域。当蓝色数据库实例具有只读副本时,只读副本将作为部署中绿色数据库实例的只读副本进行复制。如果蓝色数据库实例为多可用区数据库实例部署,则绿色数据库实例将创建为多可用区数据库实例部署。

准备进行蓝绿部署

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

准备 RDS for MySQL 数据库实例以进行蓝绿部署

在为 RDS for MySQL 数据库实例创建蓝绿部署之前,必须启用自动备份。有关说明,请参阅 启用自动备份

准备 RDS for PostgreSQL 数据库实例进行蓝绿部署

在为 RDS for PostgreSQL 数据库实例创建蓝绿部署之前,请务必执行以下操作:

  • 在开启逻辑复制(rds.logical_replication)的情况下,将实例与自定义数据库参数组关联。从蓝色环境复制到绿色环境需要逻辑复制。有关说明,请参阅 在 Amazon RDS 中修改数据库参数组中的参数

    由于蓝绿部署要求每个数据库至少有一个后台工作线程,因此请务必根据您的工作负载调整以下配置设置:有关调整每个设置的说明,请参阅 PostgreSQL 文档中的 Configuration Settings

    • max_replication_slots

    • max_wal_senders

    • max_logical_replication_workers

    • max_worker_processes

    启用逻辑复制并设置所有配置选项后,请务必重启数据库实例,以便您的更改生效。蓝绿部署要求数据库实例与数据库参数组同步,否则创建将失败。有关更多信息,请参阅 重启中的数据库实例

  • 确保您的数据库实例运行的 RDS for PostgreSQL 版本与 RDS 蓝绿部署兼容。有关兼容版本列表,请参阅 支持 Amazon RDS 蓝绿部署的区域和数据库引擎

  • 确认数据库实例不是外部复制的源或目标。有关更多信息,请参阅 蓝绿部署的一般限制

  • 确保数据库实例中的所有表都有主键。PostgreSQL 逻辑复制不允许对没有主键的表进行 UPDATEDELETE 操作。

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

创建蓝绿部署时指定更改

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

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

有关修改数据库实例的信息,请参阅修改 Amazon RDS 数据库实例

指定更高的引擎版本

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

指定其它数据库参数组

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

如果您指定不同的数据库参数组,则指定的数据库参数组将与绿色环境中的所有数据库实例相关联。如果您未指定不同的参数组,则绿色环境中的每个数据库实例都与其所对应的蓝色数据库实例的参数组相关联。

使用 RDS 优化写入

您可以使用蓝绿部署升级到支持 RDS 优化写入的数据库实例类。您只能在使用支持的数据库实例类创建的数据库上启用 RDS 优化写入。因此,此选项会创建一个使用支持的数据库实例类的绿色数据库,这使您能够在绿色数据库实例上开启 RDS 优化写入。

如果您要从不支持 RDS 优化写入的数据库实例类升级到支持 RDS 优化写入的数据库实例类,则还必须升级绿色数据库实例的存储配置。有关更多信息,请参阅 升级存储配置

您只能升级主要绿色数据库实例的数据库实例类。默认情况下,绿色环境中的只读副本将继承蓝色环境中的数据库实例设置。绿色环境成功创建后,您必须手动修改绿色环境中只读副本的数据库实例类。

不支持某些实例类升级,具体取决于蓝色数据库实例的引擎版本和实例类。有关数据库实例类的更多信息,请参阅 数据库实例类

升级存储配置

如果您的蓝色数据库未使用最新的存储配置,RDS 可以将绿色数据库实例从较旧的存储配置(32 位文件系统)迁移到首选配置。您可以使用 RDS 蓝绿部署来克服较旧 32 位文件系统的存储和文件大小的扩展限制。此外,如果指定的数据库实例类支持优化写入,则此设置会更改存储配置,使其与 RDS 优化写入兼容。

注意

升级存储配置是一项 I/O 密集型操作,会导致蓝绿部署的创建时间更长。如果蓝色数据库实例使用预调配 IOPS SSD(io1)存储,并且您为绿色环境调配的实例大小为 4xlarge 或更大,则存储升级过程会更快。涉及通用 SSD(gp2)存储的存储升级可能会耗尽您的 I/O 积分余额,从而导致升级时间更长。有关更多信息,请参阅 Amazon RDS 数据库实例存储

在存储升级过程中,数据库引擎不可用。如果您的蓝色数据库实例的存储消耗量大于或等于分配的存储大小的 90%,则存储升级过程会将为绿色实例分配的存储大小增加 10%。

只有当您的蓝色数据库使用最新的存储配置,或者您要在同一请求中更改数据库实例类时,此选项才可用。您只能在最初创建蓝绿部署时升级存储配置。

创建蓝绿部署时处理延迟加载

当您创建蓝绿部署时,Amazon RDS 通过从数据库快照还原在绿色环境中创建主数据库实例。创建此部署后,绿色数据库实例继续在后台加载数据,这称为延迟加载。如果数据库实例有只读副本,则这些副本也是从数据库快照创建的,并且会延迟加载。

如果您的访问数据尚未加载,数据库实例会立即从 Amazon S3 下载请求的数据,然后在后台继续加载数据的剩余部分。有关更多信息,请参阅 Amazon EBS 快照

为了帮助减轻延迟加载对需要快速访问的表的影响,您可以执行涉及全表扫描的操作,例如 SELECT *。此操作使 Amazon RDS 可以从 S3 下载所有备份表数据。

如果应用程序尝试访问未加载的数据,则在加载数据时,应用程序可能会遇到比正常情况更高的延迟。延迟加载导致的更高延迟可能会导致延迟敏感型工作负载的性能不佳。

重要

如果您在数据加载完成之前切换蓝绿部署,则您的应用程序可能会由于高延迟而遇到性能问题。

创建蓝绿部署

您可以使用 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. 依次选择操作创建蓝绿部署

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

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

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

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

  6. 在剩余部分中,指定绿色环境的设置。有关每项设置的信息,请参阅 创建蓝绿部署的设置

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

  7. 选择创建暂存环境

要使用 Amazon CLI 创建蓝绿部署,请使用 create-blue-green-deployment 命令。有关各选项的信息,请参阅 创建蓝绿部署的设置

对于 Linux、macOS 或 Unix:

aws rds create-blue-green-deployment \ --blue-green-deployment-name my-blue-green-deployment \ --source arn:aws:rds:us-east-2:123456789012:db:mydb1 \ --target-engine-version 8.0.31 \ --target-db-parameter-group-name mydbparametergroup

对于 Windows:

aws rds create-blue-green-deployment ^ --blue-green-deployment-name my-blue-green-deployment ^ --source arn:aws:rds:us-east-2:123456789012:db:mydb1 ^ --target-engine-version 8.0.31 ^ --target-db-parameter-group-name mydbparametergroup

要使用 Amazon RDS API 创建蓝绿部署,请使用 CreateBlueGreenDeployment 操作。有关各选项的信息,请参阅 创建蓝绿部署的设置

创建蓝绿部署的设置

下表说明创建蓝绿部署时可供您选择的设置。有关 Amazon CLI 选项的更多信息,请参阅 create-blue-green-deployment。有关 RDS API 参数的更多信息,请参阅 CreateBlueGreenDeployment

控制台设置 设置说明 CLI 选项和 RDS API 参数

蓝/绿部署标识符

蓝绿部署的名称。

CLI 选项:

--blue-green-deployment-name

API 参数:

BlueGreenDeploymentName

蓝色数据库标识符

要复制到绿色环境的实例的标识符。使用 CLI 或 API 时,请指定实例的 Amazon 资源名称(ARN)。

CLI 选项:

--source

API 参数:

Source

绿色数据库的数据库参数组 与绿色环境中的数据库相关联的参数组。

CLI 选项:

--target-db-parameter-group-name

--target-db-cluster-parameter-group-name

API 参数:

TargetDBParameterGroupName

TargetDBClusterParameterGroupName

为绿色数据库启用优化写入

在绿色主数据库实例上启用 RDS 优化写入。有关更多信息,请参阅 使用 RDS 优化写入

如果您要从不支持优化写入的数据库实例类更改为支持优化写入的数据库实例类,则还必须执行存储配置升级。有关更多信息,请参阅 升级存储配置

对于 CLI 和 API,指定支持 RDS 优化写入的目标数据库实例类时,会自动在绿色主数据库实例上启用优化写入。

绿色数据库的引擎版本

将绿色环境中的数据库升级到指定的数据库引擎版本。

如果未指定,则使用与蓝色环境中相应的数据库实例相同的引擎版本,在绿色环境中创建每个数据库

CLI 选项:

--target-engine-version

RDS API 参数:

TargetEngineVersion

绿色数据库实例类

绿色环境中各个数据库实例的计算和内存容量,例如 db.m5d.xlarge

只有在为绿色数据库启用 RDS 优化写入时,此选项才可见。

CLI 选项:

--target-db-instance-class

RDS API 参数:

TargetDBInstanceClass

存储配置升级

选择是否升级您的存储文件系统配置。如果您启用此设置,RDS 会将绿色数据库从旧存储文件系统迁移到首选配置。

只有当您的蓝色数据库使用最新的存储配置,或者您在同一请求中启用 RDS 优化写入时,此选项才可用。您只能在最初创建蓝绿部署时升级存储配置。

有关更多信息,请参阅 升级数据库实例的存储文件系统

CLI 选项:

--upgrade-target-storage-config

RDS API 参数:

UpgradeTargetStorageConfig