

# 从多可用区数据库集群创建数据库实例只读副本
<a name="multi-az-db-clusters-create-instance-read-replica"></a>

您可以从多可用区数据库集群创建一个数据库实例只读副本，以便扩展到集群的计算容量或 I/O 容量之外，以应对读取量繁重的数据库工作负载。可以将这一过多的读取流量引导到一个或多个数据库实例只读副本。还可以使用只读副本从多可用区数据库集群迁移到数据库实例。

要创建只读副本，请将多可用区数据库集群指定为复制源。多可用区数据库集群的读取器实例之一始终是复制源，而并非写入器实例。此条件可确保副本始终与源集群同步，即使在失效转移的情况下也是如此。

**Topics**
+ [比较读取器数据库实例和数据库实例只读副本](#multi-az-db-clusters-readerdb-vs-dbrr)
+ [注意事项](#multi-az-db-clusters-instance-read-replica-considerations)
+ [创建数据库实例只读副本](#multi-az-db-clusters-instance-read-replica-create)
+ [提升数据库实例只读副本](#multi-az-db-clusters-promote-instance-read-replica)
+ [从多可用区数据库集群创建数据库实例只读副本的限制](#multi-az-db-clusters-create-instance-read-replica-limitations)

## 比较读取器数据库实例和数据库实例只读副本
<a name="multi-az-db-clusters-readerdb-vs-dbrr"></a>

多可用区数据库集群的*数据库实例只读副本*在以下各个方面不同于多可用区数据库集群的*读取器数据库实例*：
+ 读取器数据库实例充当自动失效转移目标，而数据库实例只读副本则不是。
+ 读取器数据库实例必须先确认写入器数据库实例中的更改，然后才能提交更改。但是，对于数据库实例只读副本，更新将异步复制到只读副本，而无需确认。
+ 读取器数据库实例始终与多可用区数据库集群的写入器数据库实例共享相同的实例类、存储类型和引擎版本。但是，数据库实例只读副本不一定必须与源集群共享相同的配置。
+ 可以将数据库实例只读副本提升为单独的数据库实例。您无法将多可用区数据库集群的读取器数据库实例提升为独立实例。
+ 读取器端点仅将请求路由到多可用区数据库集群的读取器数据库实例。该端点从不将请求路由到数据库实例只读副本。

有关读取器和写入器数据库实例的更多信息，请参阅[多可用区数据库集群架构](multi-az-db-clusters-concepts.md#multi-az-db-clusters-concepts-overview)。

## 注意事项
<a name="multi-az-db-clusters-instance-read-replica-considerations"></a>

在从多可用区数据库集群创建数据库实例只读副本之前，请考虑以下事项：
+ 创建数据库实例只读副本时，此只读副本必须与其源集群属于相同的主版本以及相同或更高的次要版本。创建只读副本后，您可以选择将此只读副本升级到比源集群更高的次要版本。
+ 创建数据库实例只读副本时，分配的存储空间必须与源多可用区数据库集群的已分配存储空间相同。创建只读副本后，您可以更改分配的存储空间。
+ 对于 RDS for MySQL，源多可用区数据库集群的 `gtid-mode` 参数必须设置为 `ON`。有关更多信息，请参阅 [使用多可用区数据库集群的数据库集群参数组](USER_WorkingWithDBClusterParamGroups.md)。
+ 长时间运行的活动事务会减慢创建只读副本的过程。我们建议您等待长时间运行的事务完成，然后再创建只读副本。
+ 如果您删除数据库实例只读副本的源多可用区数据库集群，则该集群正在写入的任何只读副本都将提升为独立的数据库实例。

## 创建数据库实例只读副本
<a name="multi-az-db-clusters-instance-read-replica-create"></a>

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 从多可用区数据库集群创建数据库实例只读副本。

**注意**  
我们强烈建议您基于源多可用区数据库集群的 Amazon VPC，在相同的虚拟私有云（VPC）中创建所有只读副本。  
如果您在与源多可用区数据库集群不同的 VPC 中创建只读副本，则副本和 RDS 系统之间的无类别域间路由（CIDR）范围可能会重叠。CIDR 重叠会使副本不稳定，从而对连接到副本的应用程序产生负面影响。如果您在创建只读副本时收到错误，请选择其他目标数据库子网组。有关更多信息，请参阅 [在 VPC 中使用数据库实例](USER_VPC.WorkingWithRDSInstanceinaVPC.md)。

### 控制台
<a name="multi-az-db-clusters-create-instance-read-replica-console"></a>

要从多可用区数据库集群创建数据库实例只读副本，请使用 AWS 管理控制台完成以下步骤。

1. 登录AWS 管理控制台并通过以下网址打开 Amazon RDS 控制台：[https://console.aws.amazon.com/rds/](https://console.aws.amazon.com/rds/)。

1. 在导航窗格中，选择 **Databases (数据库)**。

1. 选择要作为只读副本的源的多可用区数据库集群。

1. 对于 **Actions (操作)**，选择 **Create read replica (创建只读副本)**。

1. 对于**副本源**，请确保选择了正确的多可用区数据库集群。

1. 对于**数据库标识符**，输入只读副本的名称。

1. 对于其余部分，请指定数据库实例设置。有关设置的信息，请参阅 [数据库实例的设置](USER_CreateDBInstance.Settings.md)。
**注意**  
为数据库实例只读副本分配的存储空间必须与为源多可用区数据库集群分配的存储空间相同。

1. 选择**创建只读副本**。

### AWS CLI
<a name="multi-az-db-clusters-create-instance-read-replica-cli"></a>

要从多可用区数据库集群创建数据库实例只读副本，请使用 AWS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.html](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.html)。对于 `--source-db-cluster-identifier`，指定多可用区数据库集群的标识符。

对于 Linux、macOS 或 Unix：

```
aws rds create-db-instance-read-replica \
  --db-instance-identifier myreadreplica \
  --source-db-cluster-identifier mymultiazdbcluster
```

对于：Windows

```
aws rds create-db-instance-read-replica ^
  --db-instance-identifier myreadreplica ^
  --source-db-cluster-identifier mymultiazdbcluster
```

### RDS API
<a name="multi-az-db-clusters-create-instance-read-replica-api"></a>

要从多可用区数据库集群创建数据库实例只读副本，请使用 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html) 操作。

## 提升数据库实例只读副本
<a name="multi-az-db-clusters-promote-instance-read-replica"></a>

如果您不再需要数据库实例只读副本，则可以将该只读副本提升为独立的数据库实例。提升只读副本时，数据库实例将在重启后变得可用。有关说明，请参阅[将只读副本提升为独立的数据库实例](USER_ReadRepl.Promote.md)。

如果您使用只读副本将多可用区数据库集群部署迁移到单可用区或多可用区数据库实例部署，请确保停止正在向源数据库集群写入的任何事务。然后，等待对只读副本完成所有更新。在多可用区数据库集群的其中一个读取器数据库实例上发生数据库更新后，只读副本会发生数据库更新。这种复制滞后可能会有很大差异。使用 `ReplicaLag` 指标确定只读副本完成所有更新的时间。有关复制滞后的更多信息，请参阅 [监控只读复制](USER_ReadRepl.Monitoring.md)。

提升只读副本后，请等待已提升的数据库实例的状态变为 `Available`，然后再引导应用程序使用提升的数据库实例。或者，如果您不再需要多可用区数据库集群部署，请将其删除。有关说明，请参阅[删除 Amazon RDS 的多可用区数据库集群](USER_DeleteMultiAZDBCluster.Deleting.md)。

## 从多可用区数据库集群创建数据库实例只读副本的限制
<a name="multi-az-db-clusters-create-instance-read-replica-limitations"></a>

以下限制适用于从多可用区数据库集群部署创建数据库实例只读副本。
+ 您无法在与拥有源多可用区数据库集群的 AWS 账户不同的 AWS 账户中创建数据库实例只读副本。
+ 您无法在与源多可用区数据库集群不同的 AWS 区域中创建数据库实例只读副本。
+ 您无法将数据库实例只读副本还原到某个时间点。
+ 存储加密在源多可用区数据库集群和数据库实例只读副本上必须具有相同的设置。
+ 如果源多可用区数据库集群已加密，则必须使用相同的 KMS 密钥对数据库实例只读副本进行加密。
+ 要对源多可用区数据库集群执行次要版本升级，必须先对数据库实例只读副本执行次要版本升级。
+ 数据库实例只读副本不支持级联只读副本。
+ 对于 RDS for PostgreSQL，源多可用区数据库集群必须运行 PostgreSQL 版本 13.11、14.8 或 15.2.R2 或更高版本，才能创建数据库实例只读副本。
+ 您可以对数据库实例只读副本的源多可用区数据库集群执行主要版本升级，但复制到只读副本的操作会停止且无法重新启动。