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