Redrock Postgres 搜索 英文
版本: 10 / 11 / 12 / 13 / 14 / 15 / 16 / 17 / 18

第 29 章 逻辑复制

目录

29.1. 发布 (Publication)
29.1.1. 副本标识 (Replica Identity)
29.2. 订阅 (Subscription)
29.2.1. 复制槽管理 (Replication Slot Management)
29.2.2. 示例:设置逻辑复制
29.2.3. 示例:延迟复制槽创建
29.3. 逻辑复制故障转移 (Logical Replication Failover)
29.4. 行过滤器 (Row Filters)
29.4.1. 行过滤器规则
29.4.2. 表达式限制
29.4.3. UPDATE 转换
29.4.4. 分区表
29.4.5. 初始数据同步
29.4.6. 组合多个行过滤器
29.4.7. 示例
29.5. 列列表 (Column Lists)
29.5.1. 示例
29.6. 生成列复制 (Generated Column Replication)
29.7. 冲突 (Conflicts)
29.8. 限制 (Restrictions)
29.9. 架构 (Architecture)
29.9.1. 初始快照
29.10. 监控 (Monitoring)
29.11. 安全 (Security)
29.12. 配置设置
29.12.1. 发布者
29.12.2. 订阅者
29.13. 升级 (Upgrade)
29.13.1. 准备发布者升级
29.13.2. 准备订阅者升级
29.13.3. 升级逻辑复制集群
29.14. 快速设置 (Quick Setup)

逻辑复制是一种基于其复制标识(通常是主键)来复制数据对象及其更改的方法。我们使用“逻辑”一词来区别于物理复制,后者使用精确的块地址和逐字节复制。PostgreSQL 同时支持这两种机制,请参阅 第 26 章。逻辑复制允许对数据复制和安全进行精细控制。

逻辑复制使用一个发布(publish)和订阅(subscribe)模型,其中一个或多个订阅者subscribers)在发布者publisher)节点上订阅一个或多个发布publications)。订阅者从它们订阅的发布中拉取数据,并可以随后重新发布数据以实现级联复制或更复杂的配置。

当逻辑复制表通常开始时,PostgreSQL 会在发布者数据库中获取表的初始数据快照,并将其复制到订阅者。完成后,发布者自初始复制以来的更改将持续发送给订阅者。订阅者按照与发布者相同的顺序应用数据,因此在一个订阅内的发布可以保证事务一致性。这种数据复制方法有时被称为事务复制。

逻辑复制的典型用例是

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