PostgreSQL逻辑复制:未修改订阅端是否仍会产生冲突?含重启场景
关于PostgreSQL逻辑复制重启后的冲突问题
- 结论:不会引发冲突
- 原因:
- 逻辑复制的复制槽LSN由订阅端向发布端反馈——只有当订阅端成功应用并确认某段LSN对应的事务后,发布端才会更新复制槽的已提交位置。
- 订阅端重启时,会从复制槽记录的最后已确认应用的LSN开始重放,发布端只会发送这段LSN之后的未处理事务,不会重复推送订阅端已经提交过的插入操作。
- 你提到的主键冲突场景,本质是订阅端本地先插入某行,后续发布端又推送同主键的插入操作;而重启重放的逻辑不会出现这种“重复推送已完成操作”的情况,自然不会触发冲突。
内容的提问来源于stack exchange,提问作者Harish
相关产品推荐
相关产品推荐

