目录
逻辑复制是一种基于数据对象的复制标识(通常是主键)来复制数据对象及其更改的方法。我们使用术语“逻辑”来与“物理”复制进行对比,物理复制使用精确的块地址和逐字节复制。PostgreSQL 同时支持这两种机制,请参阅第 26 章。逻辑复制允许对数据复制和安全性进行细粒度控制。
逻辑复制使用发布和订阅模型,一个或多个订阅者订阅发布者节点上的一个或多个发布。订阅者从他们订阅的发布中提取数据,并可以随后重新发布数据,以允许级联复制或更复杂的配置。
表的逻辑复制通常从获取发布者数据库上的数据快照并将其复制到订阅者开始。完成此操作后,发布者上的更改会实时发送到订阅者。订阅者以与发布者相同的顺序应用数据,从而保证单个订阅中发布的事务一致性。这种数据复制方法有时被称为事务复制。
逻辑复制的典型用例是
在单个数据库或数据库子集中发生更改时,将其增量更改发送给订阅者。
在订阅者收到单个更改时触发触发器。
将多个数据库合并为一个数据库(例如,用于分析目的)。
在不同主要版本的 PostgreSQL 之间进行复制。
在不同平台(例如 Linux 到 Windows)上的 PostgreSQL 实例之间进行复制。
为不同的用户组提供对复制数据的访问权限。
在多个数据库之间共享数据库的子集。
订阅者数据库的行为方式与任何其他 PostgreSQL 实例相同,并且可以通过定义自己的发布用作其他数据库的发布者。当应用程序将订阅者视为只读时,单个订阅不会发生冲突。另一方面,如果应用程序或其他订阅者对同一组表执行其他写入操作,则可能会发生冲突。
如果您在文档中发现任何不正确、与您特定功能体验不符或需要进一步澄清的地方,请使用此表单来报告文档问题。