PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

Chapter 47. 逻辑解码

Table of Contents

47.1. 逻辑解码示例
47.2. 逻辑解码概念与架构
47.2.1. 逻辑解码核心原理
47.2.2. 复制槽
47.2.3. 复制槽同步
47.2.4. 输出插件
47.2.5. 导出快照
47.3. 流复制协议接口
47.4. 逻辑解码 SQL 函数接口
47.5. 逻辑解码相关系统目录与视图
47.6. 逻辑解码输出插件开发
47.6.1. 插件初始化函数
47.6.2. 功能与运行约束
47.6.3. 输出模式
47.6.4. 输出插件回调函数详解
47.6.5. 生成输出的辅助函数
47.7. 逻辑解码输出写入器
47.8. 逻辑解码对同步复制的支持
47.8.1. 架构概述
47.8.2. 死锁防范与注意事项
47.9. 大事务流式解码传输
47.10. 两阶段提交支持

PostgreSQL 提供了强大的底层基础设施,能够将通过 SQL 执行的数据修改流式解码并推送到外部消费者。该功能可用于多种用途,包括高阶复制解决方案与数据审计。

变更数据通过由逻辑复制槽标识的流进行发送。

流式传输这些变更的格式完全由所使用的输出插件决定。PostgreSQL 官方分发包中提供了一个示例插件。开发者也可以自行编写扩展插件,在无需修改任何内核核心代码的前提下丰富可用格式的选择。每个输出插件均有权访问由 INSERT 生成的每条全新数据行,以及由 UPDATE 生成的新行版本。对于 UPDATE 和 DELETE 操作是否能获取到旧行版本,取决于表上所配置的复制标识(Replica Identity,参见 REPLICA IDENTITY)。

可以通过流复制协议(参见 Section 54.4 与 Section 47.3)或者通过 SQL 调用函数(参见 Section 47.4)来消费这些数据变更。也可以编写自定义方式消费复制槽输出而无需修改内核源码(参见 Section 47.7)。