目录
逻辑复制是根据复制标识(通常是主键)复制数据对象及其更改的一种方法。 我们使用术语逻辑与物理复制相比,它使用确切的块地址和逐字节复制。 PostgreSQL同时支持这两种机制,请参阅第 26 章。 逻辑复制允许对数据复制和安全性进行精细控制。
逻辑复制使用发布和订阅模型, 其中一个或多个订阅者订阅发布者 节点上的一个或多个发布。 订阅者从他们订阅的发布中提取数据, 并可能随后重新发布数据以允许级联复制或更复杂的配置。
一个表的逻辑复制通常开始于发布者数据库上的数据快照并将其复制到订阅者。 一旦完成,发布者的变化就会实时发送给订阅者。订阅者按照与发布者相同的顺序应用数据, 以保证单个订阅内的发布的事务一致性。这种数据复制方法有时被称为事务复制。
典型的逻辑复制用例有:
在单个数据库或数据库的子集中发送增量更改到订阅者。
在更改到达订阅者时为单个更改触发触发器。
将多个数据库合并成一个数据库(例如出于分析目的)。
在PostgreSQL的不同主要版本之间复制。
为不同的用户组提供对复制数据的访问。
在多个数据库之间共享数据库的一个子集。
订阅者数据库的行为与任何其他PostgreSQ实例的行为相同, 可以通过定义其自己的发布来用作其他数据库的发布者。 当订阅者被应用程序视为只读时,将不会有单个订阅的冲突。 但是,如果应用程序或其他订阅者对同一组表执行其他写操作,则可能会产生冲突。