Table of Contents
逻辑复制是一种基于数据对象及其复制标识(通常是主键)来复制数据对象及其变更的方法。这里使用“逻辑”一词,是为了与物理复制相区别;物理复制使用精确的块地址,并按字节逐一复制。PostgreSQL 可以同时支持这两种机制,见 Chapter 26。逻辑复制允许对数据复制和安全性进行细粒度控制。
逻辑复制采用发布和订阅模型,一个或多个订阅者订阅某个发布者节点上的一个或多个发布。订阅者从其订阅的发布中拉取数据,随后还可以重新发布这些数据,以实现级联复制或更复杂的配置。
表的逻辑复制通常开始于 PostgreSQL 在发布端数据库中为该表数据建立快照,并将其复制到订阅端。完成后,发布端自初始复制以来发生的变更会持续发送给订阅端。订阅端会按与发布端相同的顺序应用这些数据,因此对于单个订阅中的发布,可以保证事务一致性。这种数据复制方法有时也称为事务性复制。
逻辑复制的典型用法是:
当单个数据库或数据库的某个子集发生变更时,将增量变更发送给订阅者。
当单个变更到达订阅端时触发触发器。
将多个数据库汇总到单个数据库中(例如用于分析)。
在PostgreSQL的不同主版本之间进行复制。
在不同平台上(例如Linux到Windows)的PostgreSQL实例之间进行复制。
向不同用户组开放对复制数据的访问。
在多个数据库间共享数据库的一个子集。
订阅端数据库的行为与任何其他 PostgreSQL 实例相同,并且可以通过定义自己的发布,作为其他数据库的发布者。当应用把订阅端视为只读时,单个订阅不会产生冲突。另一方面,如果应用或其他订阅者对同一组表执行了其他写操作,就可能发生冲突。
如果您发现文档中有不正确的内容、与您使用特定功能的经验不符或需要进一步说明,请使用此表单来报告文档问题。