9.3 9.4 9.5 9.6 10 11 12 13 14 15 16 17 Current(18)
PostgreSQL中文社区 问题报告 纠错本页面

第 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 Transformations
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两种机制都支持,请见第 26 章。逻辑复制允许在数据复制 和安全性上更细粒度的控制。

逻辑复制使用一种发布订阅模型,其中有一个或 更多订阅者订阅一个发布者节点上的一个或更多 发布。订阅者从它们所订阅的发布拉取数据,并且可能后续重新发布这些 数据以允许级联复制或更复杂的配置。

当表的逻辑复制通常开始时,PostgreSQL会在发布者数据库上拍摄表数据的快照并将其复制到 订阅者。一旦完成,自初始复制以来发布者的更改会不断发送到订阅者。订阅者以与发布者 相同的顺序应用数据,以确保在单个订阅中的发布的事务一致性。这种数据复制方法有时被 称为事务复制。

逻辑复制的典型用法是:

订阅者数据库的行为与任何其他PostgreSQL实例相同,并且可以被用作其他数据库的发布者, 只需要定义它自己的发布。当订阅者被应用当作只读时,单一的订阅中不会有冲突。另一方面, 如果应用或者对相同表集合的订阅者执行了其他的写动作,冲突可能会发生。