逻辑复制 是一种将数据库修改提取为离散元素流(例如元组数据或 SQL 命令)的方法,这些元素随后可以重放到不同的数据存储库中,该存储库可以是另一个 PostgreSQL 实例,也可以是能够处理来自 输出插件 数据的任何其他应用程序。
通过 逻辑解码 输出插件 对 逻辑复制 的初步支持已添加于 PostgreSQL 9.4,而 PostgreSQL 实例之间的逻辑复制支持已添加于 PostgreSQL 10。
配置
以下 配置参数 特定于 逻辑复制
debug_logical_replication_streaming(PostgreSQL 16 ~)logical_decoding_work_mem(PostgreSQL 13 ~)max_logical_replication_workers(PostgreSQL 10 ~)max_parallel_apply_workers_per_subscription(PostgreSQL 16 ~)max_sync_workers_per_subscription(PostgreSQL 10 ~)
变更历史
进行中
- PostgreSQL 19
- PostgreSQL 18
- PostgreSQL 17
pg_upgrade支持迁移逻辑复制槽 (提交 29d0a77f)- 二进制升级现在可以保留订阅的完整状态 (提交 9a17be1e)
- PostgreSQL 16
- 发布 可以包含来自同一模式的模式和单个表 (提交 13a185f5)
- 可以创建跳过具有复制源的数据的订阅 (提交 36628396)
- 大事务由并行工作进程应用 (提交 216a7848)
- 添加了回调函数
ReorderBufferUpdateProgressTxnCB以避免在长时间运行的 DDL 操作期间出现逻辑复制超时风险 (提交 8c58624d) - 添加了等待事件
LogicalApplySendData(提交 fce003cf) - 在应用
UPDATE/DELETE时,订阅者可以使用PRIMARY KEY或REPLICA IDENTITY以外的索引 (提交 89e46da5)) - 现在可以以二进制格式复制表 (提交 ecb69652)
- 现在以表所有者的身份执行逻辑复制 (提交 1e10d49b)
- 现在在备用服务器上支持逻辑解码 (提交 0fdab27a)
- 逻辑复制槽现在可能由于 horizon 或
wal_level而失效 (提交 be87200e)
- PostgreSQL 15
- PostgreSQL 14
- 数据可以以二进制格式传输 (提交 9de77b54)
- 添加了对正在进行的事务流式传输的支持 (提交 46482432)
- 输出插件 API 现在能够解码预备事务 (提交 0aa8a01d)
- 添加了函数
pg_xact_commit_timestamp_origin()(提交 b1e48bbe) - 函数
pg_last_committed_xact()现在也返回复制源 ID (提交 b1e48bbe) - 允许在表同步期间进行多个事务 (提交 ce0fdbfe)
- PostgreSQL 13
- 添加了 配置参数
logical_decoding_work_mem(提交 cec2edfa)
- 添加了 配置参数
- PostgreSQL 12
- 现在可以复制逻辑复制槽 (提交 9f06d79e)
- PostgreSQL 11
- PostgreSQL 10
- PostgreSQL 9.6
- PostgreSQL 9.5
- 添加了复制源进度跟踪基础设施 (提交 5aa23504)
- PostgreSQL 9.4
- 添加了通过
输出插件进行逻辑解码的支持 (提交 b89e1510) - 将
logical设置添加到wal_level(提交 e55704d8) - 可以通过
ALTER TABLE ... REPLICA IDENTITY ...指定副本标识列 (初始提交 07cacba9) - 添加了 relopt
user_catalog_table(提交 66abc260) - 添加了核心实用程序
pg_recvlogical(初始提交 8bdd12bb) - 添加了
test_decoding模块 (提交 b89e1510)
- 添加了通过
参考资料
- PostgreSQL 文档: 逻辑复制
有用链接
- PostgreSQL 中逻辑复制的演变:第一手资料 - 2025 年 9 月 Petr Jelinek / EnterpriseDB 的博客文章
- 逻辑复制的演变 - 2023 年 9 月 Amit Kapila 的博客文章
- PostgreSQL 中的逻辑复制内部:工作原理 - 2023 年 3 月 Vignesh C / Fujitsu 的博客文章
