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

创建蓝绿部署

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

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

如果蓝色数据库实例为多可用区数据库实例部署,则绿色数据库实例将创建为多可用区数据库实例部署。

准备进行蓝绿部署

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

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

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

准备 RDS for PostgreSQL 数据库实例以进行采用物理复制的蓝绿部署

在创建使用物理复制的 RDS for PostgreSQL 蓝绿部署之前,必须启用自动备份。有关说明,请参阅 启用自动备份

有关使用物理复制或逻辑复制的版本列表,请参阅 PostgreSQL 蓝绿部署的复制方法

准备 RDS for PostgreSQL 数据库实例以进行采用逻辑复制的蓝绿部署

在创建使用逻辑复制的 RDS for PostgreSQL 蓝绿部署之前,务必执行以下操作:有关使用逻辑复制或物理复制的版本列表,请参阅 PostgreSQL 蓝绿部署的复制方法

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

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

    • max_replication_slots

    • max_wal_senders

    • max_logical_replication_workers

    • max_worker_processes

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

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

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

  • RDS for PostgreSQL 使用 PostgreSQL 的本机逻辑复制,将预写日志(WAL)段存储在蓝色实例上,直到这些段在绿色环境中重播。创建蓝绿部署之前,请通过检查以下指标来验证蓝色实例是否具有足够的容量:

    • FreeStorageSpace

    • TransactionLogsGeneration

    • TransactionLogsDiskUsage

    • OldestReplicationSlotLag

    要估算蓝色实例所需的额外存储空间,请在工作负载高峰期监控 TransactionLogGeneration CloudWatch 指标。例如,如果您的工作负载在 24 小时内生成 100 GB 的 WAL 数据,请确保至少有 100 GB 的额外存储空间来容纳一天的 WAL 段。有关更多信息,请参阅 监控 Amazon RDS 实例中的指标

创建蓝绿部署时指定更改

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

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

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

指定更高的引擎版本

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

指定其它数据库参数组

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

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

修改存储和性能设置

在绿色环境中调整存储和性能设置以优化资源分配。这些设置包括分配的存储、预调配 IOPS、存储类型和存储吞吐量(对于 gp3 存储)。

您可以将绿色数据库实例的存储类型改为 gp2、gp3、io1 或 io2。对于 gp3 存储,您还可以调整存储吞吐量,以增强高需求工作负载的数据传输性能,或者减少低强度应用程序的成本。有关更多信息,请参阅 Amazon RDS 数据库实例存储

您也可以选择增加或减少绿色环境中分配的存储。但是,只有当目标分配存储比当前存储使用量高出至少 20% 时,才应减少存储。如果减少分配的存储,Amazon RDS 会启动存储配置升级。有关更多信息,请参阅 升级存储配置

如果蓝色数据库实例使用磁性存储,您必须将绿色数据库实例改为通用或预调配 IOPS 存储类型,这样才能增加或减少分配的存储。

使用 RDS 优化写入

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

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

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

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

升级存储配置

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

注意

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

在存储升级期间,绿色数据库实例暂时不可用,而蓝色数据库实例仍可用。在此期间,复制会暂停。监控蓝色实例上的存储,并在存储空间达到 90% 时考虑扩展,因为绿色实例在升级后会自动扩展 10%。

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

蓝绿部署的延迟加载和存储初始化

当您创建蓝绿部署时,Amazon RDS 通过从数据库快照还原在绿色环境中创建主数据库实例。之后,绿色数据库实例及其只读副本继续在后台加载数据,这一过程称为延迟加载

延迟加载仅在应用程序请求时才加载数据块。如果您尝试访问尚未加载的数据,Amazon EBS 会立即从 Amazon S3 检索它们,而其余数据继续在后台加载。有关更多信息,请参阅 Amazon EBS 快照

为了加速整个卷的性能,Amazon RDS 提供存储初始化功能,以读取绿色环境卷中的所有块。Amazon EBS 主动从 Amazon S3 下载块,从首次使用起即可提供最大的卷性能。存储初始化完全在后台进行,这确保不会影响数据库实例的可用性或正在进行的活动,例如修补或升级。

存储初始化仅适用于蓝绿部署中具有 gp2gp3io1io2 卷类型的实例。它支持除 t3 和 t4 系列之外的所有实例类。如果您将单可用区部署中的绿色数据库实例修改为多可用区数据库实例部署,则存储初始化将包括多可用区配置中的辅助节点。

在存储初始化期间,实例仍完全可用并能用于数据库操作,但存储可能要等到初始化完成后才能达到全部性能。在存储初始化进行期间,实例的整体状态变为存储初始化,而进度指示器反映了数据库实例所有卷的最低初始化水平。

可使用控制台、Amazon CLI 或 Amazon RDS API 监控存储初始化。

Console

在 Amazon Web Services Management Console中,您可以查看存储初始化的进度以及数据库实例的状态。

蓝绿部署的存储初始化进度指示器
Amazon CLI

通过 Amazon CLI,您可以使用 describe-db-instances 命令监控存储初始化。响应中的 PercentProgress 字段显示已从 Amazon S3 检索了多少百分比的数据。

aws rds describe-db-instances --db-instance-identifier my-db-instance { "DBInstances": [ { "DBInstanceIdentifier": "my-db-instance", "DBInstanceClass": "db.m5.2xlarge", "Engine": "postgres", "DBInstanceStatus": "storage-initialization", ... "PercentProgress": "34" } ] }
Amazon RDS API

利用 Amazon RDS API,您可以通过调用 DescribeDBInstances 操作来检索存储初始化的状态。

进度指示器会随着后台初始化作业的进展而更新,这样,您就可以跟踪存储就绪情况,直到整个存储初始化完成。当您的绿色数据库实例变为完全可操作时,存储初始化可帮助优化性能。

创建蓝绿部署

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

    将出现 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 参数

分配的存储空间

要为绿色数据库实例分配的存储量(以 GiB 为单位)。您可以选择增加或减少分配的存储。

如果您的蓝色数据库实例使用磁性(standard)存储,则您必须将绿色数据库实例改为通用或预调配 IOPS 存储类型,这样才能在绿色环境中修改分配的存储。

有关更多信息,请参阅 Amazon RDS 数据库实例存储

CLI 选项:

--target-allocated-storage

API 参数:

TargetAllocatedStorage

蓝绿部署标识符

蓝绿部署的名称。

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 优化写入的目标数据库实例类时,会自动在绿色主数据库实例上启用优化写入。

绿色数据库的引擎版本

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

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

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

CLI 选项:

--target-engine-version

RDS API 参数:

TargetEngineVersion

绿色数据库实例类

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

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

CLI 选项:

--target-db-instance-class

RDS API 参数:

TargetDBInstanceClass

预置 IOPS

最初为绿色数据库分配的预调配每秒输入/输出操作次数(IOPS)。

此值仅适用于绿色主数据库实例,不适用于绿色副本。

CLI 选项:

--target-iops

RDS API 参数:

TargetIops

存储配置升级

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

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

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

CLI 选项:

--upgrade-target-storage-config

RDS API 参数:

UpgradeTargetStorageConfig

Storage throughput(存储吞吐量)

绿色数据库的存储吞吐量值。仅在您为存储类型选择通用型 SSD(gp3)时,此设置才可见。

此值仅适用于绿色主数据库实例,不适用于绿色副本。

有关更多信息,请参阅 gp3 存储(推荐)

CLI 选项:

--target-storage-throughput

RDS API 参数:

TargetStorageThroughput

存储类型

绿色数据库的存储类型。以下为支持的存储类型:

  • 通用 SSD(gp2)

  • 通用 SSD(gp3)

  • 预调配 IOPS(io1)

  • 预调配 IOPS SSD(io2)

此值仅适用于绿色主数据库实例,不适用于绿色副本。

有关更多信息,请参阅 Amazon RDS 存储类型

CLI 选项:

--target-storage-type

RDS API 参数:

TargetStorageType