

# Amazon RDS 蓝绿部署概述
<a name="blue-green-deployments-overview"></a>

通过使用 Amazon RDS 蓝绿部署，您可以进行数据库更改并测试，然后再在生产环境中实施这些更改。*蓝绿部署* 会创建一个复制生产环境的暂存环境。在蓝绿部署中，*蓝色环境* 是当前的生产环境。*绿色环境* 是暂存环境，与当前生产环境保持同步。

您可以在绿色环境中更改 RDS 数据库实例，而不会影响生产工作负载。例如，您可以升级主要或次要数据库引擎版本、升级基础文件系统配置或在暂存环境中更改数据库参数。您可以彻底测试绿色环境中的变化。准备就绪后，您可以*切换*环境，以将绿色环境转换为新的生产环境。切换通常需要不到一分钟，不会丢失数据，也无需更改应用程序。

由于绿色环境是生产环境拓扑的副本，因此绿色环境包括数据库实例使用的功能。这些功能包括只读副本、存储配置、数据库快照、自动备份、性能详情和增强监控。如果蓝色数据库实例为多可用区数据库实例部署，则绿色数据库实例也是多可用区数据库实例部署。

**注意**  
目前，仅支持 RDS for MariaDB、RDS for MySQL 和 RDS for PostgreSQL 蓝绿部署。有关 Amazon Aurora 可用性，请参阅《Amazon Aurora 用户指南》**中的 [Amazon Aurora 蓝绿部署概述](https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/blue-green-deployments-overview.html)。  
在某些情况下，RDS for PostgreSQL 使用逻辑复制而不是物理复制来保持绿色环境与蓝色环境同步。有关更多信息，请参阅 [PostgreSQL 蓝绿部署的复制方法](blue-green-deployments-replication-type.md)。

**Topics**
+ [区域和版本可用性](#blue-green-deployments-region-version-availability)
+ [使用 Amazon RDS 蓝绿部署的优势](#blue-green-deployments-benefits)
+ [蓝绿部署的工作流](#blue-green-deployments-major-steps)
+ [授权访问 Amazon RDS 蓝绿部署操作](blue-green-deployments-authorizing-access.md)
+ [Amazon RDS 蓝绿部署的限制和注意事项](blue-green-deployments-considerations.md)
+ [Amazon RDS 蓝绿部署最佳实践](blue-green-deployments-best-practices.md)

## 区域和版本可用性
<a name="blue-green-deployments-region-version-availability"></a>

功能可用性和支持因每个数据库引擎的特定版本以及 AWS 区域而异。有关更多信息，请参阅 [支持 Amazon RDS 蓝绿部署的区域和数据库引擎](Concepts.RDS_Fea_Regions_DB-eng.Feature.BlueGreenDeployments.md)。

## 使用 Amazon RDS 蓝绿部署的优势
<a name="blue-green-deployments-benefits"></a>

通过使用 Amazon RDS 蓝绿部署，您可以随时了解最新的安全补丁，提高数据库性能，并在短暂且可预测的停机时间内采用更新的数据库功能。蓝绿部署降低了数据库更新（例如主要或次要引擎版本升级）的风险和减少了停机时间。

蓝绿部署提供以下优势：
+ 轻松创建生产就绪的暂存环境。
+ 自动将数据库更改从生产环境复制到暂存环境。
+ 在不影响生产环境的情况下在安全的暂存环境中测试数据库更改。
+ 通过数据库补丁和系统更新保持最新状态。
+ 实施和测试更新的数据库功能。
+ 在不更改应用程序的情况下，将您的暂存环境切换为新的生产环境。
+ 使用内置切换防护机制安全切换。
+ 消除切换期间的数据丢失。
+ 快速切换，通常不到一分钟，具体取决于您的工作负载。

## 蓝绿部署的工作流
<a name="blue-green-deployments-major-steps"></a>

使用蓝绿部署进行数据库更新时，请完成以下主要步骤。

1. 确定需要更新的生产环境。

   例如，此映像中的生产环境具有多可用区数据库实例部署（mydb1）和只读副本（mydb2）。  
![\[蓝绿部署中的生产（蓝色）环境\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/blue-green-deployment-blue-environment.png)

1. 创建蓝绿部署。有关说明，请参阅[在 Amazon RDS 中创建蓝绿部署](blue-green-deployments-creating.md)。

   下图显示了步骤 1 中生产环境的蓝绿部署示例。在创建蓝绿部署时，RDS 会复制主数据库实例的完整拓扑和配置以创建绿色环境。复制的数据库实例名称附加了 `-green-random-characters`。映像中的暂存环境包含多可用区数据库实例部署（mydb1-green-**abc123**）和只读副本（mydb2-green-**abc123**）。  
![\[蓝绿部署\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/blue-green-deployment.png)

   创建蓝绿部署时，您可以升级数据库引擎版本并为绿色环境中的数据库实例指定不同的数据库参数组。RDS 还配置从蓝色环境中的主数据库实例到绿色环境中的主数据库实例的复制。

   创建蓝绿部署后，默认情况下，绿色环境中的数据库实例为只读状态。

1. 如果需要，对暂存环境进行其他更改。例如，您可以在绿色环境中更改一个或多个数据库实例使用的数据库实例类。

   有关修改数据库实例的信息，请参阅[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

1. 测试您的暂存环境。

   在测试期间，建议您将绿色环境中的数据库保持为只读状态。在绿色环境中启用写入操作需谨慎，因为它们可能导致复制冲突。它们还可能导致切换后生产数据库中出现意外数据。要对 RDS for MySQL 启用写入操作，请将 `read_only` 参数设置为 `1`，然后等待参数组进行同步。由于 `read_only` 是一个动态参数，因此无需重启。同步后，将 `read_only` 从 `1` 更改为 `0`。对于使用逻辑复制的 RDS for PostgreSQL 部署，在会话级别将 `default_transaction_read_only` 参数设置为 `off`。对于那些使用物理复制的部署，不能对绿色环境启用写入操作。

1. 准备就绪后，切换以将暂存环境转换为新的生产环境。有关说明，请参阅[切换 Amazon RDS 中的蓝绿部署](blue-green-deployments-switching.md)。

   切换会导致停机。停机时间通常不到一分钟，但根据您的工作负载，停机时间可能会更长。

   下图显示了切换后的数据库实例。  
![\[切换蓝绿部署后的数据库实例\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/blue-green-deployment-switchover.png)

   切换后，处于绿色环境中的数据库实例将成为新的生产数据库实例。当前生产环境中的名称和端点分配给新转换的生产环境，无需更改您的应用程序。因此，您的生产流量现在流向新的生产环境。先前蓝色环境中的数据库实例通过向当前名称附加 `-oldn`（其中 `n` 是一个数字）来重命名。例如，假设蓝色环境中数据库实例的名称为 `mydb1`。切换之后，数据库实例名称将为 `mydb1-old1`。

   在本例的映像中，切换期间会发生以下变化：
   + 名为 `mydb1-green-abc123` 的绿色环境多可用区数据库实例部署将成为名为 `mydb1` 的生产多可用区数据库实例部署。
   + 名为 `mydb2-green-abc123` 的绿色环境只读副本成为生产只读副本 `mydb2`。
   + 名为 `mydb1` 的蓝色环境多可用区数据库实例部署成为 `mydb1-old1`。
   + 名为 `mydb2` 的蓝色环境只读副本成为 `mydb2-old1`。

1. 如果您不再需要蓝绿部署，可将其删除。有关说明，请参阅[删除 Amazon RDS 中的蓝绿部署](blue-green-deployments-deleting.md)。

   切换后，之前的生产环境不会被删除，因此如有必要，您可以将其用于回归测试。