

# 为 Amazon RDS on AWS Outposts 创建只读副本
<a name="rds-on-outposts.rr"></a>

Amazon RDS on AWS Outposts 使用 MySQL 和 PostgreSQL 数据库引擎的内置复制功能，从源数据库实例创建只读副本。源数据库实例将成为主数据库实例。对主数据库实例进行的更新将异步复制到只读副本。您可以将从应用程序发出的读取查询路由到只读副本，以减轻主数据库实例上的负载。利用只读副本，可以实现弹性扩展并超越单个数据库实例的容量限制，以处理高读取量的数据库工作负载。

当您从 RDS on Outposts 数据库实例创建只读副本时，该只读副本使用客户拥有的 IP 地址（CoIP）。有关更多信息，请参阅 [客户拥有的适用于 Amazon RDS on AWS Outposts 的 IP 地址](rds-on-outposts.coip.md)。

RDS on Outposts 上的只读副本具有以下限制：
+ 您无法为 RDS on Outposts 上的 RDS for SQL Server 数据库实例创建只读副本。
+ RDS on Outposts 不支持跨区域只读副本。
+ RDS on Outposts 不支持级联只读副本。
+ 源 RDS on Outposts 数据库实例不能具有本地备份。源数据库实例的备份目标必须是您的 AWS 区域。
+ 只读副本需要客户拥有的 IP（CoIP）池。有关更多信息，请参阅 [客户拥有的适用于 Amazon RDS on AWS Outposts 的 IP 地址](rds-on-outposts.coip.md)。
+ 只能在与源数据库实例相同的虚拟私有云（VPC）中，在 RDS on Outposts 上创建只读副本。
+ RDS on Outposts 上的只读副本可以位于与源数据库实例相同的 Outpost 上或同一 VPC 中的另一个 Outpost 上。
+ 您无法为使用 AWS KMS External Key Store (XKS) 加密的数据库实例创建只读副本。

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 从 RDS on Outposts 数据库实例创建只读副本。有关只读副本的更多信息，请参阅 [使用数据库实例只读副本](USER_ReadRepl.md)。

## 控制台
<a name="outposts-rr.Console"></a>

**从源数据库实例创建只读副本**

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. 为 **Outposts Connectivity**（Outposts 连接性）指定您的设置。这些设置适用于使用具有数据库实例的数据库子网组的虚拟私有云（VPC）的 Outpost。您的 VPC 必须基于 Amazon VPC 服务。

1. 选择您的 **DB instance class**（数据库实例类）。我们建议您为只读副本使用与源数据库实例相同或更大的数据库实例类和存储类型。

1. 对于 **Multi-AZ deployment**（多可用区部署），选择 **Create a standby instance (recommended for production usage)** [创建备用实例（推荐用于生产用途）]，以在另一个多可用区中创建备用数据库实例。

   创建您的只读副本作为多可用区数据库实例与源数据库是否为多可用区数据库实例无关。

1. （可选）在 **Connectivity**（连接）下，设置 **Subnet Group**（子网组）和 **Availability Zone**（可用区）的值。

   如果您为 **Subnet Group**（子网组）和 **Availability Zone**（可用区）指定值，则只读副本将在与数据库子网组中的可用区关联的 Outpost 上创建。

   如果您为 **Subnet Group**（子网组）指定一个值，并为 **Availability Zone**（可用区）指定 **No preference**（无首选项），则将在数据库子网组的随机 Outpost 上创建只读副本。

1. 对于 **AWS KMS key**，选择 KMS 密钥的 AWS KMS key 标识符。

    必须加密只读副本。

1. 根据需要选择其他选项。

1. 选择 **Create read replica (创建只读副本)**。

创建只读副本后，您可以在 RDS 控制台的**数据库**页面上看到它。它在**角色**列中显示**副本**。

## AWS CLI
<a name="outposts-rr.CLI"></a>

要从源 MySQL 或 PostgreSQL 数据库实例创建只读副本，请使用 AWS CLI 命令 [create-db-instance-read-replica](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.html)。

您可以通过指定 `--db-subnet-group-name` 和 `--availability-zone` 选项来控制创建只读副本的位置：
+ 如果您同时指定 `--db-subnet-group-name` 和 `--availability-zone` 选项，则只读副本将在与数据库子网组中的可用区关联的 Outpost 上创建。
+ 如果您指定 `--db-subnet-group-name` 选项但未指定 `--availability-zone` 选项，则只读副本将在数据库子网组中的随机 Outpost 上创建。
+ 如果您未指定任一选项，则只读副本将在与源 RDS on Outposts 数据库实例相同的 Outpost 上创建。

以下示例创建了一个副本并通过包含 `--db-subnet-group-name` 和 `--availability-zone` 选项来指定只读副本的位置。

**Example**  
对于 Linux、macOS 或 Unix：  

```
aws rds create-db-instance-read-replica \
    --db-instance-identifier myreadreplica \
    --source-db-instance-identifier mydbinstance \
    --availability-zone us-west-2a
```
对于 Windows：  

```
aws rds create-db-instance-read-replica ^
    --db-instance-identifier myreadreplica ^
    --source-db-instance-identifier mydbinstance ^
    --availability-zone us-west-2a
```

## RDS API
<a name="outposts-rr.API"></a>

要从源 MySQL 或 PostgreSQL 数据库实例创建只读副本，请使用以下必要的参数调用 Amazon RDS API [CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html) 操作：
+ `DBInstanceIdentifier`
+ `SourceDBInstanceIdentifier`

您可以通过指定 `DBSubnetGroupName` 和 `AvailabilityZone` 参数来控制创建只读副本的位置：
+ 如果您同时指定 `DBSubnetGroupName` 和 `AvailabilityZone` 参数，则只读副本将在与数据库子网组中的可用区关联的 Outpost 上创建。
+ 如果您指定 `DBSubnetGroupName` 参数但未指定 `AvailabilityZone` 参数，则只读副本将在数据库子网组中的随机 Outpost 上创建。
+ 如果您未指定任一参数，则只读副本将在与源 RDS on Outposts 数据库实例相同的 Outpost 上创建。