Chapter 31.逻辑复制

目录

逻辑复制是一种根据数据对象及其复制身份(通常是主键)复制数据对象及其更改的方法。与物理复制相反,我们使用逻辑一词,而物理复制使用精确的块地址和逐字节复制。 PostgreSQL 同时支持两种机制,请参见Chapter 26。逻辑复制允许对数据复制和安全性进行细粒度控制。

逻辑复制使用一个* publish subscribe 模型,其中一个或多个 subscriber 订阅 publisher 节点上的一个或多个 publication *。订阅者从他们订阅的出版物中提取数据,随后可能会重新发布数据,以允许级联复制或更复杂的配置。

表的逻辑复制通常从获取发布者数据库上的数据快照并将其复制到订阅者开始。完成此操作后,发布者上的更改将实时发送给订阅者。订阅者以与发布者相同的 Sequences 应用数据,从而确保单个订阅中的发布具有事务一致性。这种数据复制方法有时称为事务复制。

逻辑复制的典型用例是:

  • 在单个数据库或数据库子集中的增量更改发生时将其发送给订户。

  • 当单个更改到达订户时触发它们。

  • 将多个数据库合并为一个数据库(例如,出于分析目的)。

  • 在 PostgreSQL 的不同主要版本之间复制。

  • 在不同平台(例如 Linux 到 Windows)上的 PostgreSQL 实例之间复制

  • 向不同的用户组授予对复制数据的访问权限。

  • 在多个数据库之间共享数据库的子集。

订阅者数据库的行为与任何其他 PostgreSQL 实例相同,并且可以通过定义自己的发布而用作其他数据库的发布者。当订阅者被应用程序视为只读时,单个订阅将没有冲突。另一方面,如果应用程序或其他订户对同一组表进行其他写操作,则可能会发生冲突。