

# 将只读副本提升为独立的数据库实例
<a name="USER_ReadRepl.Promote"></a>

您可以将只读副本提升为独立的数据库实例。如果源数据库实例有多个只读副本，则将其中一个只读副本提升为数据库实例对其他副本无影响。

提升只读副本时，RDS 会在使其可用之前重启数据库实例。提升过程可能需要几分钟或更长时间才能完成，具体时间取决于只读副本的大小。

![\[提升只读副本\]](http://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/images/read-replica-promote.png)


## 提升只读副本的使用案例
<a name="USER_ReadRepl.Promote.use_cases"></a>

出于以下几个原因，您可能需要将只读副本提升为独立的数据库实例：
+ **实施故障恢复** – 如果主数据库实例失败，您可以使用只读副本提升作为数据恢复方案。此方法可补充同步复制、自动故障检测和故障转移。

  如果您了解异步复制的影响和限制，并且仍然要使用只读副本提升功能实现数据恢复，则可以这样做。为此，请先创建只读副本，然后监控主数据库实例的故障。如果出现故障，请执行以下操作：

  1. 提升只读副本。

  1. 将数据库流量指引到提升的数据库实例。

  1. 将提升的数据库实例作为源，创建替代只读副本。
+ **升级存储配置** - 如果您的源数据库实例未使用首选存储配置，则可以创建该实例的只读副本，并升级存储文件系统配置。此选项可将只读副本的文件系统迁移到首选配置。您可以将只读副本升级为独立的数据库实例。

  您可以使用此选项来克服较旧 32 位文件系统的存储和文件大小的扩展限制。有关更多信息，请参阅 [升级数据库实例的存储文件系统](USER_PIOPS.UpgradeFileSystem.md)。

  只有当您的源数据库实例*未*使用最新的存储配置，或者您要在同一请求中修改数据库实例类时，此选项才可用。
+ **分片** – 分片体现了“无共享”架构，主要涉及将大型数据库分成几个较小的数据库。拆分数据库的一种常用方法是将未加入到同一查询中的表拆分到不同主机。另一种方法是跨多台主机复制表，然后通过哈希算法确定哪一台主机接收给定的更新。您可以创建与各分片（较小的数据库）相对应的只读副本，决定将它们转换成独立分片后即可对其进行提升。然后可以根据您的要求，为每个分区创建表的密钥空间 (如果要拆分行) 或分配。
+ **执行 DDL 操作（仅限 MySQL 和 MariaDB）**– 创建或重新生成索引等 DDL 操作需要耗费时间，并且会显著影响数据库实例性能。在 MySQL 或 MariaDB 只读副本与其主数据库实例同步后，可以对该只读副本执行这些操作。然后就可以提升此只读副本并指导应用程序使用提升的实例。

**注意**  
如果您的只读副本是 RDS for Oracle 数据库实例，则可以执行*切换*而不是提升操作。在切换中，源数据库实例成为新的副本，副本成为新的源数据库实例。有关更多信息，请参阅 [执行 Oracle Data Guard 切换](oracle-replication-switchover.md)。

## 提升后的只读副本的特征
<a name="USER_ReadRepl.Promote.characteristics"></a>

在提升只读副本后，它不再作为只读副本，而是成为独立的数据库实例。该新的独立数据库实例具有以下特性：
+ 独立的数据库实例会保留提升前只读副本的选项组和参数组。
+ 您可以从独立的数据库实例创建只读副本，并执行时间点还原操作。
+ 由于数据库实例不再是只读副本，因此不能再使用它作为复制目标。

## 提升只读副本的先决条件
<a name="USER_ReadRepl.Promote.prereqs"></a>

在提升只读副本之前，请执行以下操作：
+ 查看您的备份策略：
  + 建议启用备份并至少完成一次备份。备份持续时间随在上次备份后对数据库进行的更改数而发生变化。
  + 如果您为只读副本启用了备份，请配置自动备份时段，以便每日备份不会影响只读副本提升。
  + 确保您的只读副本不处于 `backing-up` 状态。当只读副本处于这种状态时，您无法对其进行提升。
+ 停止向主数据库实例写入任何事务，然后等待 RDS 将所有更新应用于只读副本。

  在主数据库实例上完成数据库更新后，只读副本进行数据库更新。复制滞后可能会有很大差异。使用 [https://aws.amazon.com/rds/faqs/#105](https://aws.amazon.com/rds/faqs/#105) 指标确定只读副本完成所有更新的时间。
+ （仅限 MySQL 和 MariaDB）：如果要在提升之前，对 MySQL 或 MariaDB 只读副本进行更改，必须在只读副本的数据库参数组中将 `read_only` 参数设置为 `0`。然后可在只读副本上执行所有必需的 DDL 操作，如创建索引。在只读副本上执行的操作不会影响主数据库实例的性能。

## 提升只读副本：基本步骤
<a name="USER_ReadRepl.Promote.steps"></a>

以下步骤说明将只读副本提升为数据库实例的一般过程：

1. 使用 Amazon RDS 控制台上的**提升**选项、AWS CLI 命令 [https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica.html](https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica.html) 或 [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html) Amazon RDS API 操作来提升只读副本。
**注意**  
提升过程需要几分钟才能完成。在提升只读副本时，RDS 会停止复制并重启只读副本。完成重启后，只读副本即可作为新数据库实例使用。

1. (可选) 将新的数据库实例修改为多可用区部署。有关更多信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md) 和 [配置和管理 Amazon RDS 的多可用区部署](Concepts.MultiAZ.md)。

### 控制台
<a name="USER_ReadRepl.Promote.Console"></a>

**将只读副本提升为独立的数据库实例**

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

1. 在 Amazon RDS 控制台中，选择**数据库**。

   随后会显示**数据库**窗格。每个只读副本在**角色**列中显示**副本**。

1. 选择要提升的只读副本。

1. 对于**操作**，请选择**提升**。

1. 在**提升只读副本**页面上，输入新提升的数据库实例的备份保留期和备份时段。

1. 根据需要设置完毕后，选择 **Continue**。

1. 在确认页面上，选择 **Promote Read Replica (提升只读副本)**。

### AWS CLI
<a name="USER_ReadRepl.Promote.CLI"></a>

要将只读副本提升为独立的数据库实例，请使用 AWS CLI [https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica.html](https://docs.aws.amazon.com/cli/latest/reference/rds/promote-read-replica.html) 命令。

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

```
aws rds promote-read-replica \
    --db-instance-identifier myreadreplica
```
对于：Windows  

```
aws rds promote-read-replica ^
    --db-instance-identifier myreadreplica
```

### RDS API
<a name="USER_ReadRepl.Promote.API"></a>

要将只读副本提升为独立的数据库实例，请调用具有必要参数 `PromoteReadReplica` 的 Amazon RDS API [https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_PromoteReadReplica.html) 操作。