

# 使用适用于 Amazon RDS for Db2 的副本
<a name="db2-replication"></a>

RDS for Db2 支持创建副本数据库以提供读取扩展和灾难恢复功能。您可以在两种模式下创建副本：用于卸载读取工作负载的只读副本和用于跨区域灾难恢复的备用副本。RDS for Db2 使用 IBM Db2 高可用性灾难恢复（HADR）技术来进行复制。有关更多信息，请参阅 IBM Db2 文档中的 [High availability disaster recovery (HADR)](https://www.ibm.com/docs/en/db2/11.5?topic=server-high-availability-disaster-recovery-hadr)。

*Db2 副本*数据库是主数据库的物理副本。只读模式下的 Db2 副本称为*只读副本*。处于备用模式的 Db2 副本称为*备用副本*。Db2 不支持在副本中进行写入操作，但您可以提升副本以使其变为可写。提升的副本拥有提出提升请求时的已复制数据。有关更多信息，请参阅 [将只读副本提升为独立的数据库实例](USER_ReadRepl.Promote.md)。

有关 RDS for Db2 副本的特性和行为摘要，请参阅[数据库引擎的只读副本之间的差异](USER_ReadRepl.Overview.Differences.md)。

## 只读副本和备用副本
<a name="db2-read-replicas.overview.modes"></a>

创建或修改 Db2 副本时，可以将其置于以下任一模式：

**只读模式**。  
这是默认值。HADR 会将源数据库中的更改传输并应用到所有只读副本数据库。对于只读副本，Db2 环境变量 `DB2_HADR_ROS` 设置为 `ON`。副本数据库上读取查询的隔离级别为 `Uncommitted Read`。有关更多信息，请参阅 IBM Db2 文档中的 [Isolation level on the active standby database](https://www.ibm.com/docs/en/db2/11.5?topic=standby-isolation-level-active-database)。  
有关适用于所有数据库引擎的只读副本的一般信息，请参阅[使用数据库实例只读副本](USER_ReadRepl.md)。有关 Db2 HADR 的更多信息，请参阅 IBM Db2 文档中的 [High availability disaster recovery (HADR)](https://www.ibm.com/docs/en/db2/11.5?topic=server-high-availability-disaster-recovery-hadr)。

 **备用**  
对于备用副本，Db2 环境变量 `DB2_HADR_ROS` 设置为 `OFF`，以便副本数据库不接受用户连接。备用副本的主要用途是跨区域灾难恢复。  
备用副本无法为只读工作负载提供服务。备用副本没有任何归档日志。

您可以从一个源数据库实例创建最多三个副本。您可以为同一源数据库实例创建只读副本和备用数据库副本的组合。创建副本后，您可以更改副本模式。有关更多信息，请参阅[修改 RDS for Db2 副本模式](db2-replicas-changing-replica-mode.md)。

在创建副本之前，请务必满足所有要求。有关更多信息，请参阅 [RDS for Db2 副本的要求和注意事项](db2-read-replicas.limitations.md)。

## 数据库激活
<a name="db2-read-replicas.overview.database-activations"></a>

Db2 HADR 是在数据库级别配置的。创建副本后，将为所有 Db2 数据库（包括 RDS 完全管理的 `rdsadmin`）设置 HADR。在创建 Db2 副本之前，必须显式激活所有数据库。否则，副本创建将失败，并且 Amazon RDS 发出一个事件。在数据库实例拥有一个或多个副本后，您无法使用 `rdsadmin.activate_database` 或 `rdsadmin.deactivate_database` 存储过程来激活或停用数据库实例上的任何数据库。有关更多信息，请参阅 [用于管理 RDS for Db2 数据库的存储过程](db2-sp-managing-databases.md)。

## HADR 配置
<a name="db2-read-replicas.overview.hadr-configurations"></a>

可以通过连接到数据库，然后运行 `db2 get db cfg` 来查看该数据库的所有 HADR 配置。

## 归档日志保留
<a name="db2-read-replicas.overview.log-retention"></a>

满足以下条件后，Amazon RDS 会清除主数据库实例中的日志：
+ 这些日志至少保留了两个小时。
+ 归档日志保留时间的设置已过期。
+ 归档日志已成功复制到所有副本数据库实例。此条件既适用于同一 Amazon Web Services 区域中的数据库实例，也适用于跨区域数据库实例。

有关如何设置存档日志保留时间的信息，请参阅[rdsadmin.set\$1archive\$1log\$1retention](db2-sp-managing-databases.md#db2-sp-set-archive-log-retention)。

Amazon RDS 会单独检查和清理每个数据库。如果数据库丢失 HADR 连接或者无法获得有关该连接的信息，Amazon RDS 将跳过该数据库并且不会清除归档日志。

## Db2 复制过程中的中断
<a name="db2-read-replicas.overview.outages"></a>

当您创建副本时，Amazon RDS 会制作源数据库实例的数据库快照，然后开始复制。数据库快照操作开始时，源数据库实例会经历非常短暂的 I/O 暂停。这种 I/O 暂停通常持续大约一秒时间。但是，如果源数据库实例为多可用区部署，则源数据库实例不会经历任何 I/O 暂停。这是因为在多可用区部署中，快照取自辅助数据库实例。

数据库快照变成 Db2 副本。Amazon RDS 为源数据库和副本设置必要的参数和权限，而不会经历任何服务中断。同样，如果删除副本，也不会发生中断。