

# 使用 Amazon RDS for PostgreSQL 只读副本
<a name="USER_PostgreSQL.Replication.ReadReplicas"></a>

您可以通过向实例添加只读副本来扩展 Amazon RDS for PostgreSQL 数据库实例的读取。与其它 Amazon RDS 数据库引擎一样，RDS for PostgreSQL 使用 PostgreSQL 的原生复制机制来使只读副本与对源数据库的更改保持同步。有关只读副本和 Amazon RDS 的一般信息，请参阅[使用数据库实例只读副本](USER_ReadRepl.md)。

在下文中，您可以找到使用 RDS for PostgreSQL 只读副本的特定信息。



## PostgreSQL 只读副本限制
<a name="USER_PostgreSQL.Replication.ReadReplicas.Limitations"></a>

以下是 PostgreSQL 只读副本的限制：
+ PostgreSQL 只读副本是只读的。尽管只读副本不是可写的数据库实例，但您可以将其升级为独立的 RDS for PostgreSQL 数据库实例。不过该过程无法撤消。
+ 如果 RDS for PostgreSQL 数据库实例运行的是 14.1 之前的 PostgreSQL 版本，则无法从另一个只读副本创建只读副本。RDS for PostgreSQL 仅支持在 RDS for PostgreSQL 版本 14.1 版及更高版本上级联只读副本。有关更多信息，请参阅 [将级联只读副本用于 RDS for PostgreSQL](USER_PostgreSQL.Replication.ReadReplicas.Cascading.md)。
+ 如果您升级 PostgreSQL 只读副本，它将成为可写的数据库实例。它停止从源数据库实例接收预写日志（WAL）文件，并且已不再是只读实例。您可以像对任何 RDS for PostgreSQL 数据库实例一样从升级的数据库实例创建新只读副本。有关更多信息，请参阅 [将只读副本提升为独立的数据库实例](USER_ReadRepl.Promote.md)。
+ 如果您从复制链（一系列级联只读副本）中提升 PostgreSQL 只读副本，则任何现有的下游只读副本将继续自动从提升后的实例接收 WAL 文件。有关更多信息，请参阅 [将级联只读副本用于 RDS for PostgreSQL](USER_PostgreSQL.Replication.ReadReplicas.Cascading.md)。
+ 如果源数据库实例上没有运行任何用户事务，则关联的 PostgreSQL 只读副本会报告长达五分钟的复制滞后。副本滞后的计算公式为 `currentTime - lastCommitedTransactionTimestamp`，这意味着，当未处理任何事务时，副本滞后值会在一段时间内增加，直到预写日志（WAL）分段切换。默认情况下，RDS for PostgreSQL 每 5 分钟切换一次 WAL 分段，这会导致事务记录以及报告的滞后减少。
+ 您无法为早于 14.1 的 RDS for PostgreSQL 版本的 PostgreSQL 只读副本启用自动备份。仅 RDS for PostgreSQL 14.1 及更高版本支持只读副本的自动备份。对于 RDS for PostgreSQL 13 和更早版本，如果需要只读副本的备份，请从只读副本创建快照。
+ 只读副本不支持时间点故障恢复（PITR）。您只能将 PITR 用于主（写入器）实例，而不能用于只读副本。要了解更多信息，请参阅[将 Amazon RDS 的数据库实例还原到指定时间](USER_PIT.md)。
+ 对于 PostgreSQL 版本 12 及更低版本，只读副本会在 60-90 天的维护时段内自动重启以应用密码轮换。如果在安排的重启之前，副本失去了与源的连接，则实例仍将重启以继续复制。对于 PostgreSQL 版本 13 及更高版本，在密码轮换过程中，只读副本可能会出现短暂的复制断开连接和重新连接的情况。