使用 pglogical 跨实例同步数据 - Amazon Relational Database Service

使用 pglogical 跨实例同步数据

所有当前可用的 RDS for PostgreSQL 版本都支持 pglogical 扩展。pglogic 扩展早于 PostgreSQL 在版本 10 中引入的功能类似的逻辑复制特征。有关更多信息,请参阅为 Amazon RDS for PostgreSQL 执行逻辑复制

pglogical 扩展支持在两个或更多 RDS for PostgreSQL 数据库实例之间进行逻辑复制。它还支持在不同的 PostgreSQL 版本之间进行复制,以及在 RDS for PostgreSQL 数据库实例和 Aurora PostgreSQL 数据库集群上运行的数据库之间进行复制。pglogical 扩展使用发布-订阅模型将对表和其他对象(例如序列)的更改从发布者复制到订阅者。它依赖于复制插槽来确保更改从发布者节点同步到订阅者节点,定义如下。

  • 发布者节点是作为要复制到其他节点的数据来源的 RDS for PostgreSQL 数据库实例。发布者节点定义要在发布集中复制的表。

  • 订阅者节点是用于接收来自发布商的 WAL 更新的 RDS for PostgreSQL 数据库实例。订阅者创建订阅以连接到发布者并获取解码后的 WAL 数据。订阅者创建订阅时,将在发布者节点上创建复制插槽。

在下文中,您可以了解有关设置 pglogical 扩展的信息。

pglogical 扩展的要求和限制

所有当前可用的 RDS for PostgreSQL 版本都支持 pglogical 扩展。

发布者节点和订阅者节点都必须设置为进行逻辑复制。

要从发布者复制到订阅用户的表必须具有相同的名称和相同的架构。这些表还必须包含相同的列,并且这些列必须使用相同的数据类型。发布者表和订阅者表必须具有相同的主键。我们建议您仅使用 PRIMARY KEY 作为唯一约束。

对于 CHECK 约束和 NOT NULL 约束,订阅者节点上的表可能比发布者节点上的表具有更宽松的约束。

pglogical 扩展提供了诸如双向复制之类的特征,PostgreSQL(版本 10 及更高版本)中内置的逻辑复制特征不支持这些特征。有关更多信息,请参阅使用 pglogic 进行 PostgreSQL 双向复制