背景
1、产品的问题点
- PG 逻辑复制不支持DDL
2、问题点背后涉及的技术原理
- DDL无法从WAL中解析, 因此逻辑复制不能支持DDL.
3、这个问题将影响哪些行业以及业务场景
- 使用逻辑复制的业务, 例如单元化部署, 同步数据到其他单元. 同步数据到OLAP业务库, 同步到消息队列, 同步到搜索引擎等.
4、会导致什么问题?
- 当数据结构发生变化后, 无法捕获这个变化, 使得逻辑同步出现异常.
5、业务上应该如何避免这个坑
- 统一协调管理DDL, 使用barrier, 在执行DDL前确保下游已同步完所有增量, 然后上下游执行DDL, 并放开barrier, 允许DML操作.
- 如果是PG到PG的同步, 可以使用event trigger捕获DDL, 存储在表中, 这个表的内容作为DML解析传到下游订阅节点. 下游订阅节点在这个表上创建触发器, 在触发器内完成DDL回放.
6、业务上避免这个坑牺牲了什么, 会引入什么新的问题
- 复杂度增加了, 一般用户搞不定
7、数据库未来产品迭代如何修复这个坑
- 希望内置DDL同步功能.