

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

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

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

由于绿色环境是生产环境拓扑的副本，因此数据库集群及其所有数据库实例都将在部署中复制。绿色环境还包括数据库集群使用的功能，例如数据库集群快照、性能详情、增强监控和 Aurora Serverless v2。

**注意**  
Aurora MySQL、Aurora PostgreSQL 和 Aurora Global Database 支持蓝绿部署。有关 Amazon RDS 可用性，请参阅《Amazon RDS 用户指南》**中的 [Amazon RDS 蓝绿部署概述](https://docs.amazonaws.cn/AmazonRDS/latest/UserGuide/blue-green-deployments-overview.html)。

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

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

功能可用性和支持因每个数据库引擎的特定版本以及 Amazon Web Services 区域而异。有关更多信息，请参阅 [支持蓝绿部署的区域和 Aurora 数据库引擎](Concepts.Aurora_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>

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

1. 确定需要更新的生产数据库集群。

   下图显示了一个生产数据库集群的示例。  
![\[蓝绿部署中的生产（蓝色）Aurora 数据库集群\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/blue-green-deployment-blue-environment-aurora.png)

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

   下图显示了步骤 1 中生产环境的蓝绿部署示例。在创建蓝绿部署时，RDS 会复制 Aurora 数据库集群的完整拓扑和配置以创建绿色环境。复制的数据库集群和数据库实例的名称附加了 `-green-random-characters`。映像中的暂存环境包含数据库集群（auroradb-green-**abc123**）。它还包含数据库集群中的三个数据库实例（auroradb-instance1-green-**abc123**、auroradb-instance2-green-**abc123** 和 auroradb-instance3-green-**abc123**）。  
![\[Amazon Aurora 的蓝绿部署\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/blue-green-deployment-aurora.png)

   创建蓝绿部署时，可以为绿色环境中的数据库集群指定更高的数据库引擎版本和不同的数据库集群参数组。您还可以为数据库集群中的数据库实例指定不同的数据库参数组。

   RDS 还配置从蓝色环境中的主数据库实例到绿色环境中的主数据库实例的复制。
**重要**  
对于 Aurora MySQL 版本 3，在创建蓝绿部署后，绿色环境中的数据库集群默认情况下不支持写入操作。但是，这一点不适用于具有 `CONNECTION_ADMIN` 权限的用户，包括 Aurora 主用户。拥有此权限的用户可以覆盖 `read_only` 行为。有关更多信息，请参阅 [基于角色的权限模型](AuroraMySQL.Compare-80-v3.md#AuroraMySQL.privilege-model)。

1. 对暂存环境进行更改。

   例如，您可以在绿色环境中更改一个或多个数据库实例使用的数据库实例类。

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

1. 测试您的暂存环境。

   在测试期间，建议您将绿色环境中的数据库保持为只读状态。在绿色环境中启用写入操作需谨慎，因为它们可能导致复制冲突。它们还可能导致切换后生产数据库中出现意外数据。要对 Aurora MySQL 启用写入操作，请将 `read_only` 参数设置为 `0`，然后重启数据库实例。对于 Aurora PostgreSQL，请在会话级别将 `default_transaction_read_only` 参数设置为 `off`。

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

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

   下图显示了切换后的数据库集群。  
![\[切换 Amazon Aurora 蓝绿部署后的数据库集群和数据库实例\]](http://docs.amazonaws.cn/AmazonRDS/latest/AuroraUserGuide/images/blue-green-deployment-switchover-aurora.png)

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

   在本例的映像中，切换期间会发生以下变化：
   + 绿色环境数据库集群 `auroradb-green-abc123` 成为名为 `auroradb` 的生产数据库集群。
   + 名为 `auroradb-instance1-green-abc123` 的绿色环境数据库实例成为生产数据库实例 `auroradb-instance1`。
   + 名为 `auroradb-instance2-green-abc123` 的绿色环境数据库实例成为生产数据库实例 `auroradb-instance2`。
   + 名为 `auroradb-instance3-green-abc123` 的绿色环境数据库实例成为生产数据库实例 `auroradb-instance3`。
   + 名为 `auroradb` 的蓝色环境数据库集群成为 `auroradb-old1`。
   + 名为 `auroradb-instance1` 的蓝色环境数据库实例成为 `auroradb-instance1-old1`。
   + 名为 `auroradb-instance2` 的蓝色环境数据库实例成为 `auroradb-instance2-old1`。
   + 名为 `auroradb-instance3` 的蓝色环境数据库实例成为 `auroradb-instance3-old1`。

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

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