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

Chapter 29. 逻辑复制

目录

29.1. 发布
29.1.1. 复制标识
29.2. 订阅
29.2.1. 复制槽管理
29.2.2. 示例:建立逻辑复制
29.2.3. 示例:延迟创建复制槽
29.3. 逻辑复制故障切换
29.4. 行过滤器
29.4.1. 行过滤规则
29.4.2. 表达式限制
29.4.3. UPDATE 转换
29.4.4. 分区表
29.4.5. 初始数据同步
29.4.6. 组合多个行过滤器
29.4.7. 示例
29.5. 列列表
29.5.1. 示例
29.6. 生成列复制
29.7. 冲突
29.8. 限制
29.9. 架构
29.9.1. 初始快照
29.10. 监控
29.11. 安全性
29.12. 配置参数
29.12.1. 发布端
29.12.2. 订阅端
29.13. 升级
29.13.1. 为发布端升级做准备
29.13.2. 为订阅端升级做准备
29.13.3. 升级逻辑复制集群
29.14. 快速设置

逻辑复制是一种基于数据对象及其复制标识(通常是主键)来复制数据对象及其变更的方法。这里使用“逻辑”一词,是为了与物理复制相区别;物理复制使用精确的块地址,并按字节逐一复制。PostgreSQL 可以同时支持这两种机制,见 Chapter 26。逻辑复制允许对数据复制和安全性进行细粒度控制。

逻辑复制采用发布订阅模型,一个或多个订阅者订阅某个发布者节点上的一个或多个发布。订阅者从其订阅的发布中拉取数据,随后还可以重新发布这些数据,以实现级联复制或更复杂的配置。

表的逻辑复制通常开始于 PostgreSQL 在发布端数据库中为该表数据建立快照,并将其复制到订阅端。完成后,发布端自初始复制以来发生的变更会持续发送给订阅端。订阅端会按与发布端相同的顺序应用这些数据,因此对于单个订阅中的发布,可以保证事务一致性。这种数据复制方法有时也称为事务性复制。

逻辑复制的典型用法是:

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