

# 使用适用于 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 会清除主数据库实例中的日志：
+ 这些日志至少保留了两个小时。
+ 归档日志保留时间的设置已过期。
+ 归档日志已成功复制到所有副本数据库实例。此条件既适用于同一 AWS 区域中的数据库实例，也适用于跨区域数据库实例。

有关如何设置存档日志保留时间的信息，请参阅[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 为源数据库和副本设置必要的参数和权限，而不会经历任何服务中断。同样，如果删除副本，也不会发生中断。

# RDS for Db2 副本的要求和注意事项
<a name="db2-read-replicas.limitations"></a>

Db2 副本要求分为若干类别：许可和版本控制、备份和还原注意事项、复制行为以及一般操作注意事项。在创建 Db2 副本之前，请先熟悉以下要求和注意事项。

## RDS for Db2 副本的版本和许可要求
<a name="db2-read-replicas.limitations.versions-and-licenses"></a>

在创建 RDS for Db2 副本之前，请审核以下有关版本和许可模型的信息：
+ **支持的版本**：所有 Db2 11.5 版本都支持副本数据库实例。

  源数据库实例和副本数据库实例必须使用相同的主要版本。Db2 副本支持次要版本升级，但不支持主要版本升级。有关升级数据库实例的信息，请参阅[升级数据库实例 引擎版本](USER_UpgradeDBInstance.Upgrading.md)。
**注意**  
升级源数据库实例时，会自动升级所有副本以保持版本兼容性。
+ **有效的许可模型和副本模式**：Db2 高级版（AE）和标准版（SE）都可以在只读或备用模式下为自带许可（BYOL）模型和通过 AWS Marketplace 的 Db2 许可证模型创建副本。
+ **自定义参数组**：必须为副本指定自定义参数组。

  对于使用 BYOL 模型的副本，此自定义参数组必须包括您的 IBM Site ID 和 IBM Customer ID。有关更多信息，请参阅 [Db2 的自带许可（BYOL）的 IBM ID](db2-licensing.md#db2-prereqs-ibm-info)。您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 为副本指定此自定义参数组。
+ **vCPU 数量**因副本模式和许可模式而异：
  + 无论数据库实例大小如何，**备用副本**始终使用两个 vCPU。
    + **BYOL 模型**：AWS License Manager 配置显示 RDS for Db2 数据库实例使用两个 vCPU。
    + **通过 AWS Marketplace 的 Db2 许可证模型**：账单反映两个 vCPU 的许可证成本。
  + **只读副本**使用与数据库实例大小相同的 vCPU 计数。
    + **BYOL 模型**：AWS License Manager 配置显示 RDS for Db2 数据库实例使用与数据库实例大小匹配的相同数量的 vCPU。
    + **通过 AWS Marketplace 的 Db2 许可证模型**：账单反映与数据库实例大小匹配的相同 vCPU 数量的许可证成本。

## RDS for Db2 的备份和还原注意事项
<a name="db2-read-replicas.limitations.backups"></a>

副本备份的行为与主数据库备份的行为不同。请考虑以下备份和还原要求：
+ 要创建 RDS for Db2 副本的快照或开启自动备份，请确保手动设置备份保留期。原定设置情况下，自动备份处于开启状态。
+ 还原副本备份时，将还原到数据库时间，而不是进行备份的时间。数据库时间指备份中数据的最新应用的事务时间。差异很大，因为副本可能会落后于主数据库数分钟或数小时。当有多个数据库时，RDS for Db2 将使用最早的数据库时间。

  要查找差异，请运行 AWS CLI [describe-db-snapshots](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-snapshots.html) 命令或调用 RDS API [DescribeDBSnapshots](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSnapshots.html) 操作。将 `SnapshotDatabaseTime` 值和 `OriginalSnapshotCreateTime` 值进行比较。`SnapshotDatabaseTime` 值是副本备份的数据库时间。`OriginalSnapshotCreateTime` 值是主数据库上最新应用的事务。

有关备份和还原备份的详细信息，请参阅[使用 RDS for Db2 副本备份](db2-read-replicas.backups.md)。

## RDS for Db2 副本的复制注意事项
<a name="db2-read-replicas.limitations.replication"></a>

Db2 副本使用 HADR 技术，但有特定的限制和行为。请查看以下注意事项：
+ 复制对 RDS for Db2 数据库实例上的所有数据库使用 Db2 HADR。
+ 复制不支持 `LOAD` 命令。如果从源数据库实例运行 `LOAD` 命令，将收到不一致的数据。
+ RDS for Db2 不会复制以下各项：
  + 存储访问。注意依赖于存储访问的数据，例如外部表。
  + 未记录的非内联 LOB。
  + 外部存储过程的二进制文件（在 C 或 Java 中）。
+ 对于备用副本，RDS for Db2 会复制以下各项：
  + 本地用户，主用户除外
  + 数据库配置参数
+ 对于只读副本，RDS for Db2 会复制以下各项：
  + 本地用户，主用户除外
  + SID 组映射

## RDS for Db2 副本的其它注意事项
<a name="db2-read-replicas.limitations.miscellaneous"></a>

其他操作注意事项适用于 Db2 副本。审核以下各项：
+ RDS for Db2 将数据库配置复制到副本中。当 RDS for Db2 提升副本时，它会停用并激活每个数据库。
+ RDS for Db2 将本地用户（但不是主用户）和 SID 组映射复制到副本。可以修改副本上的主用户。有关更多信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。
+ 所有数据库必须处于活动状态。有关激活数据库的信息，请参阅[用于管理 RDS for Db2 数据库的存储过程](db2-sp-managing-databases.md)。
+ 在创建副本之前，必须完成所有用于创建、删除、还原或前滚数据库的存储过程。有关这些存储过程的信息，请参阅[用于管理 RDS for Db2 数据库的存储过程](db2-sp-managing-databases.md)。
+ 创建副本时，Amazon RDS 会将源数据库实例上所有数据库的数据库级参数 `blocknonlogged` 设置为 `YES`。当源副本再次变为独立实例时，Amazon RDS 将该值重新设置为 `NO`。有关更多信息，请参阅 IBM Db2 文档中的 [blocknonlogged - Block creation of tables that allow non-logged activity configuration parameter](https://www.ibm.com/docs/en/db2/11.1?topic=dcp-blocknonlogged-block-creation-tables-that-allow-non-logged-activity)。
+ 创建副本时，Amazon RDS 会将源数据库实例上所有数据库的数据库级参数 `logindexbuild` 设置为 `YES`。当源副本再次变为独立实例时，Amazon RDS 将该值重新设置为 `NO`。有关更多信息，请参阅 IBM Db2 文档中的 [logindexbuild - Log index pages created configuration parameter](https://www.ibm.com/docs/en/db2/11.1?topic=parameters-logindexbuild-log-index-pages-created)。

# 为创建 RDS for Db2 副本做准备
<a name="db2-read-replicas.Configuration"></a>

在创建 RDS for Db2 副本之前，必须完成以下任务才能成功复制。这些任务有助于防止常见问题并确保最佳性能。

## 任务 1：启用自动备份
<a name="db2-read-replicas.configuration.autobackups"></a>

数据库实例可充当源数据库实例之前，您必须在源数据库实例上启用自动备份。这是所有副本创建操作的先决条件。要了解如何执行此过程，请参阅[启用自动备份](USER_WorkingWithAutomatedBackups.Enabling.md)。

有关特定于 Db2 副本的备份的信息，请参阅[使用 RDS for Db2 副本备份](db2-read-replicas.backups.md)。

## 任务 2：规划计算和存储资源
<a name="db2-read-replicas.configuration.planning-resources"></a>

确保源数据库实例及其副本在计算和存储容量方面具有适当的大小，以适合其运行负载。如果副本达到计算、网络或存储资源容量，则副本会停止接收或应用来自其源实例的更改。有关监控副本性能和资源利用率的信息，请参阅[监控只读复制](USER_ReadRepl.Monitoring.md)。

RDS for Db2 不会通过干预来缓解源数据库实例与其副本之间的高副本滞后。如果您遇到较长的副本滞后，请参阅[监控 Db2 复制滞后](db2-troubleshooting-replicas.md#db2-troubleshooting-replicas-lag)以获取故障排除指南。

您可以单独修改某个副本的存储和 CPU 资源，而不影响其源及其他副本。有关更多信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

## 任务 3：准备数据库
<a name="db2-read-replicas.configuration.activate-databases"></a>

在创建副本之前，请根据以下几点确认数据库已准备就绪：
+ 数据库实例包含您希望在数据库实例上存在的所有数据库。在创建复制副本之后，您无法在数据库实例上创建、删除数据库或本地还原数据库。对 [rdsadmin.create\$1database](db2-sp-managing-databases.md#db2-sp-create-database)、[rdsadmin.drop\$1database](db2-sp-managing-databases.md#db2-sp-drop-database) 或 [rdsadmin.restore\$1database](db2-sp-managing-databases.md#db2-sp-restore-database) 存储过程的任何调用都将失败。
+ 数据库实例上的所有数据库都处于活动状态。如果任何数据库处于非活动状态，则副本创建将失败。有关激活数据库的信息，请参阅[用于管理 RDS for Db2 数据库的存储过程](db2-sp-managing-databases.md)。

## 后续步骤
<a name="db2-read-replicas-configuration-next-steps"></a>

完成所有准备任务后，就可以创建 Db2 副本了。
+ 要创建只读副本，请参阅[创建只读副本](USER_ReadRepl.Create.md)。
+ 要创建备用副本，请参阅[创建备用 Db2 副本](db2-read-replicas.creating-in-standby-mode.md)。

# 在备用模式下创建 RDS for Db2 副本
<a name="db2-read-replicas.creating-in-standby-mode"></a>

默认情况下，以只读模式创建 Db2 副本。您可以创建备用模式的副本来用于灾难恢复。备用副本不接受用户连接，但可以为跨区域场景提供更快的失效转移功能。

创建备用副本之前，请确保您已完成准备任务。有关更多信息，请参阅 [为创建 RDS for Db2 副本做准备](db2-read-replicas.Configuration.md)。创建备用副本后，可以更改副本模式。有关更多信息，请参阅 [修改 RDS for Db2 副本模式](db2-replicas-changing-replica-mode.md)。

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 创建备用副本。有关创建只读副本的信息，请参阅[创建只读副本](USER_ReadRepl.Create.md)。

## 控制台
<a name="db2-read-replicas.creating-in-standby-mode.console"></a>

**从源 RDS for Db2 数据库实例创建备用副本**

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

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

1. 选择要用作备用副本源的 RDS for Db2 数据库实例。

1. 对于**操作**，选择**创建副本**。

1. 对于**副本模式**，选择**备用**。

1. 选择要使用的设置。对于**数据库实例标识符**，输入备用副本的名称。根据需要，调整其他设置。

1. 对于**区域**，选择将在其中启动备用副本的 AWS 区域。

1. 选择您的实例大小和存储类型。我们建议您为备用副本使用与源数据库实例相同的数据库实例类和存储类型。

1. 对于**多可用区部署**，选择**创建备用实例**，以便在另一个可用区中创建副本的备用来支持备用副本失效转移。

1. 选择要使用的其他设置。

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

在**数据库**页面中，备用副本具有角色**副本**。

## AWS CLI
<a name="db2-read-replicas.creating-in-standby-mode.cli"></a>

要在备用模式下创建 Db2 副本，请使用 AWS CLI 命令 [create-db-instance-read-replica](https://docs.aws.amazon.com/cli/latest/reference/rds/create-db-instance-read-replica.html)，并将 `--replica-mode` 设为 `mounted`。

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

```
aws rds create-db-instance-read-replica \
    --db-instance-identifier my_standby_replica \
    --source-db-instance-identifier my_db_instance \
    --replica-mode mounted
```
对于：Windows  

```
aws rds create-db-instance-read-replica ^
    --db-instance-identifier my_standby_replica ^
    --source-db-instance-identifier my_db_instance ^
    --replica-mode mounted
```

## RDS API
<a name="db2-read-replicas.creating-in-standby-mode.api"></a>

要在副本模式下创建 Db2 副本，请在 RDS API 操作 [CreateDBInstanceReadReplica](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_CreateDBInstanceReadReplica.html) 中指定 `ReplicaMode=mounted`。

# 修改 RDS for Db2 副本模式
<a name="db2-replicas-changing-replica-mode"></a>

您可以在只读模式和备用模式之间更改现有 Db2 副本的副本模式。这种灵活性使您能够根据不断变化的读取工作负载要求或灾难恢复需求来调整副本配置。

在以下情况下，您可能需要更改副本模式：
+ **只读到备用**：当您不再需要读取容量但又想保持灾难恢复功能时
+ **备用到只读**：当您需要为报告或分析工作负载添加读取容量时

更改副本模式之前，请确保满足以下条件：
+ 副本处于可用状态。
+ 副本上未运行任何主动维护操作。
+ 您具有修改数据库实例的所需权限。

更改操作可能需要几分钟才能完成。在操作过程中，数据库实例状态会更改为**正在修改**。有关状态更改的更多信息，请参阅[查看 Amazon RDS数据库实例状态](accessing-monitoring.md#Overview.DBInstance.Status)。当您从只读模式更改为备用模式时，副本将断开所有活动连接。

**重要**  
由于更改副本模式会暂时中断服务，因此请在维护时段内计划更改，以最大限度地减少对应用程序的影响。

您可以使用 AWS 管理控制台、AWS CLI 或 RDS API 修改副本模式。

## 控制台
<a name="db2-replicas-changing-replica-mode-console"></a>

**更改 Db2 副本的副本模式**

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

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

1. 选择想要修改的副本数据库。

1. 选择 **Modify**(修改)。

1. 对于**副本模式**，请选择所需的模式：
   + **只读**：用于读取工作负载
   + **备用**：用于灾难恢复

1. 选择要使更改的其他设置：

1. 选择 **Continue (继续)**。

1. 对于**修改计划**，选择**立即应用**。

1. 选择**修改数据库实例**。

1. 修改完成后，在**数据库**页面中验证副本模式的更改情况。更改完成后，副本状态应显示为**可用**。

## AWS CLI
<a name="db2-replicas-changing-replica-mode-cli"></a>

要将 Db2 副本从只读模式更改为备用模式，请在 AWS CLI 命令 [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 中将 `--replica-mode` 设置为 `mounted`。要将 Db2 副本从备用模式更改为只读模式，请将 `--replica-mode` 设置为 `open-read-only`。

以下示例将副本从只读模式更改为备用模式：

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

```
aws rds modify-db-instance \
    --db-instance-identifier my_db2_replica \
    --replica-mode mounted
```
对于：Windows  

```
aws rds modify-db-instance ^
    --db-instance-identifier my_db2_replica ^
    --replica-mode mounted
```

以下示例将副本从备用模式更改为只读模式：

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

```
aws rds modify-db-instance \
    --db-instance-identifier my_db2_replica \
    --replica-mode open-read-only
```
对于：Windows  

```
aws rds modify-db-instance ^
    --db-instance-identifier my_db2_replica ^
    --replica-mode open-read-only
```

## RDS API
<a name="db2-replicas-changing-replica-mode-api"></a>

要将 Db2 副本从只读模式更改为备用模式，请在 [ModifyDBInstance](AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 中设置 `ReplicaMode=mounted`。要将 Db2 副本从备用模式更改为只读模式，请设置 `ReplicaMode=open-read-only`。

以下 API 调用示例将副本模式从只读更改为备用：

```
{
    "DBInstanceIdentifier": "my_db2_replica",
    "ReplicaMode": "mounted",
    "ApplyImmediately": true
}
```

以下 API 调用示例将副本模式从备用更改为只读：

```
{
    "DBInstanceIdentifier": "my_db2_replica",
    "ReplicaMode": "open-read-only",
    "ApplyImmediately": true
}
```

有关这两种副本模式之间差异的信息，请参阅[使用适用于 Amazon RDS for Db2 的副本](db2-replication.md)。要排查副本问题，请参阅[排查 RDS for Db2 复制问题](db2-troubleshooting-replicas.md)。

# 使用 RDS for Db2 副本备份
<a name="db2-read-replicas.backups"></a>

您可以创建和还原 RDS for Db2 副本的备份，就像对主数据库操作一样。但是，副本备份的工作方式存在重要差异，特别是在还原时间和备份保留设置方面。

RDS for Db2 对副本同时支持自动备份和手动快照。RDS for Db2 不支持时间点还原。有关 RDS 备份的更多信息，请参阅[备份、还原和导出数据](CHAP_CommonTasks.BackupRestore.md)。

## 副本备份的主要区别
<a name="db2-read-replicas-backups-overview"></a>

副本备份与主数据库备份之间存在以下几点重要区别：
+ 默认情况下，系统不会为副本启用自动备份。
+ 还原操作使用数据库时间而不是备份创建时间。
+ 副本滞后可能会影响实际恢复的数据。有关监控副本滞后的更多信息，请参阅[监控 Db2 复制滞后](db2-troubleshooting-replicas.md#db2-troubleshooting-replicas-lag)。

## 为 RDS for Db2 副本启用自动备份
<a name="db2-read-replicas.backups.turning-on"></a>

RDS for Db2 副本与主数据库不同，默认情况下未启用自动备份。必须手动配置备份保留期才能启用自动备份。将备份保留期设置为非零正值来启用自动备份。

### 控制台
<a name="db2-read-replicas.backups.turning-on-console"></a>

**立即启用自动备份**

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

1. 在导航窗格中，选择**数据库**，然后选择要修改的数据库实例。

1. 选择**修改**。

1. 对于**备份保留期**，请选择非零正值，例如三天。

1. 选择 **Continue (继续)**。

1. 选择**立即应用**。

1. 选择**修改数据库实例**以保存更改并启用自动备份。

### AWS CLI
<a name="db2-read-replicas.backups.turning-on-cli"></a>

要启用自动备份，请使用 AWS CLI [modify-db-instance](https://docs.aws.amazon.com/cli/latest/reference/rds/modify-db-instance.html) 命令。

包括以下参数：
+ `--db-instance-identifier`
+ `--backup-retention-period`
+ `--apply-immediately` 或者 `--no-apply-immediately`

以下示例启用了自动备份并将备份保留期设置为三天。更改将立即应用。

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

```
aws rds modify-db-instance \
    --db-instance-identifier my_db_instance  \
    --backup-retention-period 3 \
    --apply-immediately
```
对于：Windows  

```
aws rds modify-db-instance ^
    --db-instance-identifier my_db_instance  ^
    --backup-retention-period 3 ^
    --apply-immediately
```

### RDS API
<a name="db2-read-replicas.backups.turning-on-api"></a>

要启用自动备份，请使用 RDS API [ModifyDBInstance](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_ModifyDBInstance.html) 操作以及以下必需参数：
+ `DBInstanceIdentifier`
+ `BackupRetentionPeriod`

## 还原 RDS for Db2 副本备份
<a name="db2-read-replicas.backups.restoring"></a>

您可以按照还原主数据库备份的方式还原 RDS for Db2 副本备份。有关更多信息，请参阅 [还原到数据库实例](USER_RestoreFromSnapshot.md)。

还原副本备份时最重要的考虑因素是了解数据库时间和备份创建时间之间的区别，尤其是在存在副本滞后的情况下。

您可以监控复制滞后并确保备份包含预期数据。有关 ReplicaLag 指标的信息，请参阅 [Amazon RDS 的 Amazon CloudWatch 指标](rds-metrics.md)。

### 了解时间差异
<a name="db2-read-replicas-backups-restoring-timing"></a>

还原副本备份时，您必须确定要还原到的时间点。数据库时间指备份中数据的最新应用的事务时间。还原副本备份时，将还原到数据库时间，而不是备份完成的时间。差异很大，因为副本可能会落后于主数据库数分钟或数小时。因此，副本备份的数据库时间可能比快照创建时间早得多。

要查找数据库时间和创建时间之间的差异，请运行 AWS CLI [describe-db-snapshots](https://docs.aws.amazon.com/cli/latest/reference/rds/describe-db-snapshots.html) 命令或调用 RDS API [DescribeDBSnapshots](https://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBSnapshots.html) 操作。比较 `SnapshotDatabaseTime` 值和 `OriginalSnapshotCreateTime` 值。`SnapshotDatabaseTime` 值是副本备份的所有数据库中最早的数据库时间。`OriginalSnapshotCreateTime` 值是主数据库上最新应用的事务。请注意，多个数据库的复制滞后可能有所不同，数据库时间可能介于这两个时间之间。

以下 AWS CLI 示例显示了两个时间之间的差异：

对于 Linux、macOS 或 Unix：

```
aws rds describe-db-snapshots \
    --db-instance-identifier my_db2_replica \
    --db-snapshot-identifier my_replica_snapshot
```

对于：Windows

```
aws rds describe-db-snapshots ^
    --db-instance-identifier my_db2_replica ^
    --db-snapshot-identifier my_replica_snapshot
```

此命令生成类似于以下示例的输出。

```
{
    "DBSnapshots": [
        {
            "DBSnapshotIdentifier": "my_replica_snapshot",
            "DBInstanceIdentifier": "my_db2_replica", 
            "SnapshotDatabaseTime": "2022-07-26T17:49:44Z",
            ...
            "OriginalSnapshotCreateTime": "2021-07-26T19:49:44Z"
        }
    ]
}
```

# 排查 RDS for Db2 复制问题
<a name="db2-troubleshooting-replicas"></a>

本主题介绍常见的 RDS for Db2 复制问题，并提供只读副本和备用副本的故障排除指导。除了查看以下故障排查信息外，还要确保在创建 Db2 副本之前遵守[要求和注意事项](db2-read-replicas.limitations.md)并完成[准备步骤](db2-read-replicas.Configuration.md)。

## 副本创建失败
<a name="db2-troubleshooting-replicas-creation"></a>



副本创建失败可能是由于以下几个原因引起的：
+ **非活跃数据库** - 在创建副本之前，源数据库实例上的所有数据库都必须处于活跃状态。

  有关激活数据库的信息，请参阅[用于管理 RDS for Db2 数据库的存储过程](db2-sp-managing-databases.md)。
+ **缺少自动备份**：源数据库实例必须启用自动备份。

  有关启用备份的信息，请参阅[为 RDS for Db2 副本启用自动备份](db2-read-replicas.backups.md#db2-read-replicas.backups.turning-on)。
+ **参数组问题**：副本需要自定义参数组。对于 BYOL 许可，参数组必须包含 IBM Site ID 和 IBM Customer ID。

  有关更多信息，请参阅 [Db2 的自带许可（BYOL）的 IBM ID](db2-licensing.md#db2-prereqs-ibm-info)。

## 监控 Db2 复制滞后
<a name="db2-troubleshooting-replicas-lag"></a>

要监控 Amazon CloudWatch 中的复制滞后，请查看 Amazon RDS `ReplicaLag` 指标。有关复制滞后时间的信息，请参阅[监控只读复制](USER_ReadRepl.Monitoring.md)和[Amazon RDS 的 Amazon CloudWatch 指标](rds-metrics.md)。有关为副本滞后设置 CloudWatch 警报的信息，请参阅[使用 Amazon CloudWatch 监控 Amazon RDS 指标](monitoring-cloudwatch.md)。

对于只读副本，如果滞后时间过长，请查询 `MON_GET_HADR` 表以了解副本数据库实例的状态。

对于备用副本，如果滞后时间过长，请查询 `MON_GET_HADR` 表以了解源数据库实例的状态。请勿查询副本数据库实例，因为副本数据库实例不接受用户连接。

复制滞后较高的常见原因包括以下几点：
+ 副本上的计算资源不足
+ 源和副本之间的网络连接问题
+ 源数据库的写入活动频繁
+ 副本的存储性能限制

如果复制滞后仍然很高，请考虑扩展副本资源。有关更多信息，请参阅 [修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

## Db2 复制错误
<a name="db2-troubleshooting-replicas-triggers"></a>

由于多种原因，Db2 复制可能处于错误状态。执行以下操作：
+ 监控事件和数据库实例状态，以确保数据库实例正在复制。

  有关更多信息，请参阅 [使用 Amazon RDS 事件通知](USER_Events.md)。
+ 在 Amazon RDS 控制台中查看 Db2 副本的诊断日志。在日志中，在 HADR 消息中查找错误。将日志序列号与主序列号进行比较。

  有关访问和解释 Db2 诊断日志的信息，请参阅 [Amazon RDS for Db2 数据库日志文件](USER_LogAccess.Concepts.Db2.md)。有关 Db2 HADR 配置和故障排除的信息，请参阅[使用适用于 Amazon RDS for Db2 的副本](db2-replication.md)。

如果复制错误仍然存在，则可能需要重新创建副本。

## 连接问题
<a name="db2-troubleshooting-replicas-connections"></a>

如果您无法连接到副本，请查看有关副本模式的以下信息：
+ **备用副本**：它们在设计上不接受用户连接。对读取工作负载使用只读副本。
+ **只读副本**：检查您的安全组设置、网络 ACL 和参数组配置。

  有关更多信息，请参阅《Amazon VPC 用户指南》**中的[使用安全组控制到 AWS 资源的流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-security-groups.html)、《Amazon VPC 用户指南》**中的[使用网络访问控制列表控制子网流量](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html)和[Amazon RDS 的参数组](USER_WorkingWithParamGroups.md)。

## 性能问题
<a name="db2-troubleshooting-replicas-performance"></a>

如果副本性能不佳，请查看以下建议：
+ 确保副本具有足够的计算和存储资源。
+ 在 Amazon CloudWatch 中监控 `ReplicaLag` 指标。
+ 考虑扩展副本数据库实例类。

有关修改资源或实例类的信息，请参阅[修改 Amazon RDS 数据库实例](Overview.DBInstance.Modifying.md)。

有关监控复制滞后的信息，请参阅[监控复制滞后](USER_ReadRepl.Monitoring.md#USER_ReadRepl.Monitoring.Lag)和 [Amazon RDS 的 Amazon CloudWatch 指标](rds-metrics.md)。有关为副本滞后设置 CloudWatch 警报的信息，请参阅[使用 Amazon CloudWatch 监控 Amazon RDS 指标](monitoring-cloudwatch.md)。