

# Amazon Aurora Auto Scaling 与 Aurora 副本结合使用
<a name="Aurora.Integrating.AutoScaling"></a>

为了满足您的连接和工作负载要求，Aurora Auto Scaling 动态调整为 Aurora 数据库集群预调配的 Aurora 副本数（读取器数据库实例）。Aurora Auto Scaling 适用于 Aurora MySQL 和 Aurora PostgreSQL。通过使用 Aurora Auto Scaling，Aurora 数据库集群可以处理连接或工作负载突然增加的情况。在连接或工作负载减少时，Aurora Auto Scaling 删除不需要的 Aurora 副本，以便您无需为未使用的配置数据库实例付费。

您可以定义一个扩展策略并将其应用于 Aurora 数据库集群。*扩展策略* 定义了 Aurora Auto Scaling 可以管理的最小和最大 Aurora 副本数。根据该策略，Aurora Auto Scaling 向上或向下调整 Aurora 副本数以响应实际工作负载，该负载是使用 Amazon CloudWatch 指标和目标值确定的。

**注意**  
Aurora Auto Scaling 不适用于写入器数据库实例上的工作负载。Aurora Auto Scaling 只能协助处理读取器实例上的工作负载。

您可以使用 AWS 管理控制台根据预定义的指标应用扩展策略。或者，您也可以使用 AWS CLI 或 Aurora Auto Scaling API 根据预定义或自定义指标应用扩展策略。

**Topics**
+ [开始前的准备工作](#Aurora.Integrating.AutoScaling.BYB)
+ [Aurora Auto Scaling 策略](#Aurora.Integrating.AutoScaling.Concepts)
+ [数据库实例 ID 和标记](#Aurora.Integrating.AutoScaling.Concepts.Tagging)
+ [Aurora Auto Scaling 和 Performance Insights](#aurora-auto-scaling-pi)

## 开始前的准备工作
<a name="Aurora.Integrating.AutoScaling.BYB"></a>

您必须先创建一个带有主（写入器）数据库实例的 Aurora 数据库集群，然后才可以将 Aurora Auto Scaling 与 Aurora 数据库集群结合使用。有关创建 Aurora 数据库集群的更多信息，请参阅[创建 Amazon Aurora 数据库集群](Aurora.CreateInstance.md)。

仅当数据库集群处于可用状态时，Aurora Auto Scaling 才会扩缩数据库集群。

在 Aurora Auto Scaling 添加新的 Aurora 副本时，新 Aurora 副本是与主实例使用的数据库实例类相同的数据库实例类。有关数据库实例类的更多信息，请参阅[Amazon Aurora数据库实例类](Concepts.DBInstanceClass.md)。而且，新 Aurora 副本的提升层设置为最低优先级，默认为 15。这意味着在故障转移期间，更高优先级的副本（如手动创建的副本）会先提升。有关更多信息，请参阅“[Aurora 数据库集群的容错能力](Concepts.AuroraHighAvailability.md#Aurora.Managing.FaultTolerance)”。

Aurora Auto Scaling 仅删除它创建的 Aurora 副本。

要利用 Aurora Auto Scaling，应用程序必须支持连接到新的 Aurora 副本。为此，建议您使用 Aurora 读取器端点。您可以使用驱动程序，如 AWS JDBC 驱动程序。有关更多信息，请参阅 [连接到 Amazon Aurora 数据库集群](Aurora.Connecting.md)。

**注意**  
Aurora 全局数据库目前不支持备用数据库集群的 Aurora Auto Scaling。

## Aurora Auto Scaling 策略
<a name="Aurora.Integrating.AutoScaling.Concepts"></a>

Aurora Auto Scaling 使用扩展策略调整 Aurora 数据库集群中的 Aurora 副本数。Aurora Auto Scaling 具有以下组件：
+ 服务相关角色
+ 目标指标
+ 最小和最大容量
+ 冷却时间

**Topics**
+ [服务相关角色](#Aurora.Integrating.AutoScaling.Concepts.SLR)
+ [目标指标](#Aurora.Integrating.AutoScaling.Concepts.TargetMetric)
+ [最小和最大容量](#Aurora.Integrating.AutoScaling.Concepts.Capacity)
+ [冷却时间](#Aurora.Integrating.AutoScaling.Concepts.Cooldown)
+ [启用或禁用缩减活动](#Aurora.Integrating.AutoScaling.Concepts.ScaleIn)
+ [添加、编辑或删除自动扩缩策略](#Aurora.Integrating.AutoScaling.Concepts.AddEditDelete)

### 服务相关角色
<a name="Aurora.Integrating.AutoScaling.Concepts.SLR"></a>

Aurora Auto Scaling 使用 `AWSServiceRoleForApplicationAutoScaling_RDSCluster` 服务相关角色。有关更多信息，请参阅 *Application Auto Scaling 用户指南* 中的 [Application Auto Scaling 服务相关角色](https://docs.aws.amazon.com/autoscaling/application/userguide/application-auto-scaling-service-linked-roles.html)。

### 目标指标
<a name="Aurora.Integrating.AutoScaling.Concepts.TargetMetric"></a>

在这种类型的策略中，预定义或自定义指标以及指标目标值是在目标跟踪扩展策略配置中指定的。Aurora Auto Scaling 创建和管理触发扩展策略的 CloudWatch 警报，并根据指标和目标值计算扩展调整。扩展策略根据需要添加或删除 Aurora 副本，以便将指标保持在指定的目标值或该值附近。除了将指标保持在目标值附近以外，目标跟踪扩展策略还会根据由于工作负载变化而造成的指标波动进行调整。这种策略还会最大限度减少数据库集群的可用 Aurora 副本数的快速波动。

例如，使用具有预定义的平均 CPU 使用率指标的扩展策略。这种策略可以将 CPU 使用率保持在指定的使用率百分比 (如 40%) 或该值附近。

**注意**  
 对于每个 Aurora 数据库集群，您只能为每个目标指标创建一个 Auto Scaling 策略。

配置 Aurora Auto Scaling 时，将根据集群中所有读取器实例的平均值计算目标指标值。此计算的执行方式如下：
+ 包括 Aurora 集群中的所有读取器实例，无论这些实例是由 Auto Scaling 管理还是手动添加的。
+ 包括与自定义端点关联的实例。自定义端点不会影响目标指标的计算。
+ 不包括集群的写入器实例。

这些指标从 CloudWatch 中使用以下维度派生：
+ `DBClusterIdentifier`
+ `Role=READER`

例如，考虑一个具有以下设置的 Aurora MySQL 集群：
+ **手动实例（不受 Auto Scaling 控制）**：
  + 写入器的 CPU 利用率为 50%
  + 读取器 1（自定义端点：`custom-reader-1`）的 CPU 利用率为 90%
  + 读取器 2（自定义端点：`custom-reader-2`）的 CPU 利用率为 90%
+ **Auto Scaling 实例**：
  + 读取器 3（使用 Auto Scaling 添加）的 CPU 利用率为 10%

在这种情况下，Auto Scaling 策略的目标指标的计算方法如下：

```
Target metric = (CPU utilization of reader 1 + reader 2 + reader 3) / total number of readers

Target metric = (90 + 90 + 10) / 3 = 63.33%
```

Auto Scaling 策略使用此值，根据定义的阈值来评估是横向缩减还是横向扩展。

请考虑以下事项：
+ 尽管自定义端点决定如何将流量路由到特定读取器，但它们不会将读取器排除在指标计算之外。
+ 手动实例始终包含在目标指标计算中。
+ 为避免意外的扩展行为，请确保 Auto Scaling 配置考虑到了集群中的所有读取器实例。
+ 如果集群没有读取器，则不会计算该指标，并且 Auto Scaling 策略警报将保持不活动状态。为使 Auto Scaling 策略有效运行，必须始终至少有一个读取器。

### 最小和最大容量
<a name="Aurora.Integrating.AutoScaling.Concepts.Capacity"></a>

您可以指定 Application Auto Scaling 管理的最大 Aurora 副本数。必须将该值设置为 0–15，并且必须大于或等于为最小 Aurora 副本数指定的值。

您还可以指定 Application Auto Scaling 管理的最小 Aurora 副本数。必须将该值设置为 0–15，并且必须小于或等于为最大 Aurora 副本数指定的值。

必须至少有一个读取器数据库实例，Aurora Auto Scaling 才能正常工作。如果数据库集群没有读取器实例，并且您将最低容量设置为 0，则 Aurora Auto Scaling 将无法工作。

**注意**  
最小和最大容量是为 Aurora 数据库集群设置的。指定的值适用于与 Aurora 数据库集群关联的所有策略。

### 冷却时间
<a name="Aurora.Integrating.AutoScaling.Concepts.Cooldown"></a>

您可以添加影响 Aurora 数据库集群扩展和缩减的冷却时间，以调整目标跟踪扩展策略的响应速度。冷却时间阻止后续扩展或缩减请求，直至冷却时间到期。这种阻止降低了为缩减请求删除 Aurora 数据库集群中的 Aurora 副本的速度，并降低了为扩展请求创建 Aurora 副本的速度。

您可以指定以下冷却时间：
+ 缩减活动减少 Aurora 数据库集群中的 Aurora 副本数。缩减冷却时间指定在完成一个缩减活动后开始另一个缩减活动之前等待的时间 (秒)。
+ 扩展活动增加 Aurora 数据库集群中的 Aurora 副本数。扩展冷却时间指定在完成一个扩展活动后开始另一个扩展活动之前等待的时间 (秒)。
**注意**  
如果后续的横向扩展请求需要的 Aurora 副本数量大于第一个请求的数量，则忽略横向扩展冷却时间。

如果您未设置横向缩减或横向扩展冷却时间，则冷却时间的默认值为 300 秒。

### 启用或禁用缩减活动
<a name="Aurora.Integrating.AutoScaling.Concepts.ScaleIn"></a>

您可以为策略启用或禁用缩减活动。启用缩减活动允许扩展策略删除 Aurora 副本。在启用缩减活动时，扩展策略中的缩减冷却时间将应用于缩减活动。禁用缩减活动将禁止扩展策略删除 Aurora 副本。

**注意**  
扩展活动始终处于启用状态，以便扩展策略可以根据需要创建 Aurora 副本。

### 添加、编辑或删除自动扩缩策略
<a name="Aurora.Integrating.AutoScaling.Concepts.AddEditDelete"></a>

可以使用 AWS 管理控制台、AWS CLI 或 Application Auto Scaling API 添加、编辑或删除自动扩缩策略。有关添加、编辑或删除自动扩缩策略的更多信息，请参阅以下各节。
+ [向 Amazon Aurora 数据库集群添加自动扩缩策略](Aurora.Integrating.AutoScaling.Add.md)
+ [编辑 Amazon Aurora 数据库集群的自动扩缩策略](Aurora.Integrating.AutoScaling.Edit.md)
+ [从 Amazon Aurora 数据库集群删除自动扩缩策略](Aurora.Integrating.AutoScaling.Delete.md)

## 数据库实例 ID 和标记
<a name="Aurora.Integrating.AutoScaling.Concepts.Tagging"></a>

当 Aurora Auto Scaling 添加副本时，其数据库实例 ID 将以 `application-autoscaling-` 作为前缀，例如 `application-autoscaling-61aabbcc-4e2f-4c65-b620-ab7421abc123`。

以下标签将自动添加到数据库实例。您可以在数据库实例详细信息页面的 **Tags**（标签）选项卡上查看它。


| 标签 | 值 | 
| --- | --- | 
| application-autoscaling:resourceId | cluster:mynewcluster-cluster | 

有关 Amazon RDS 资源标签的更多信息，请参阅 [为 Amazon Aurora 和Amazon RDS 资源添加标签](USER_Tagging.md)。

## Aurora Auto Scaling 和 Performance Insights
<a name="aurora-auto-scaling-pi"></a>

您可以使用 Performance Insights 来监控 Aurora Auto Scaling 已添加的副本，就像监视任何 Aurora 读取器数据库实例一样。

有关使用 Performance Insights 监控 Aurora 数据库集群的更多信息，请参阅[在 Amazon Aurora 上使用性能详情监控数据库负载](USER_PerfInsights.md)。