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

第 29 章. 逻辑复制

目录

29.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.8.1. 初始快照
29.9. 监控
29.10. 安全
29.11. 配置设置
29.11.1. 发布者
29.11.2. 订阅者
29.12. 快速设置

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

逻辑复制使用发布订阅模型,其中一个或多个订阅者订阅发布者节点上的一个或多个发布内容。订阅者从他们订阅的发布内容中提取数据,随后可能重新发布数据以允许级联复制或更复杂的配置。

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

逻辑复制的典型用例是

订阅者数据库的行为与任何其他 PostgreSQL 实例的行为相同,还可以通过定义自己的发布内容用作其他数据库的发布者。当订阅者被应用程序视为只读时,来自单个订阅的冲突不存在。另一方面,如果其他写入操作由应用程序或相同表集的其他订阅者完成,那么可能会出现冲突。