背景
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同步功能.