天天看點

【DB吐槽大會】第33期 - PG 邏輯複制不支援DDL

背景

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

https://github.com/digoal/blog/blob/master/202109/20210903_09.md#postgresql-%E8%AE%B8%E6%84%BF%E9%93%BE%E6%8E%A5 https://github.com/digoal/blog/issues/76