使用 Amazon RDS for PostgreSQL 只读副本
您可以通过向实例添加只读副本来扩展 Amazon RDS for PostgreSQL 数据库实例的读取。与其它 Amazon RDS 数据库引擎一样,RDS for PostgreSQL 使用 PostgreSQL 的原生复制机制来使只读副本与对源数据库的更改保持同步。有关只读副本和 Amazon RDS 的一般信息,请参阅使用数据库实例只读副本。
在下文中,您可以找到使用 RDS for PostgreSQL 只读副本的特定信息。
PostgreSQL 只读副本限制
以下是 PostgreSQL 只读副本的限制:
-
PostgreSQL 只读副本是只读的。尽管只读副本不是可写的数据库实例,但您可以将其升级为独立的 RDS for PostgreSQL 数据库实例。不过该过程无法撤消。
-
如果 RDS for PostgreSQL 数据库实例运行的是 14.1 之前的 PostgreSQL 版本,则无法从另一个只读副本创建只读副本。RDS for PostgreSQL 仅支持在 RDS for PostgreSQL 版本 14.1 版及更高版本上级联只读副本。有关更多信息,请参阅 将级联只读副本用于 RDS for PostgreSQL。
-
如果您升级 PostgreSQL 只读副本,它将成为可写的数据库实例。它停止从源数据库实例接收预写日志(WAL)文件,并且已不再是只读实例。您可以像对任何 RDS for PostgreSQL 数据库实例一样从升级的数据库实例创建新只读副本。有关更多信息,请参阅 将只读副本提升为独立的数据库实例。
-
如果您从复制链(一系列级联只读副本)中提升 PostgreSQL 只读副本,则任何现有的下游只读副本将继续自动从提升后的实例接收 WAL 文件。有关更多信息,请参阅 将级联只读副本用于 RDS for PostgreSQL。
-
如果源数据库实例上没有运行任何用户事务,则关联的 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 的数据库实例还原到指定时间。
-
对于 PostgreSQL 版本 12 及更低版本,只读副本会在 60-90 天的维护时段内自动重启以应用密码轮换。如果在安排的重启之前,副本失去了与源的连接,则实例仍将重启以继续复制。对于 PostgreSQL 版本 13 及更高版本,在密码轮换过程中,只读副本可能会出现短暂的复制断开连接和重新连接的情况。