天天看點

【DB吐槽大會】第57期 - PG multi-master 支援不友好

背景

1、産品的問題點

  • PG multi-master 支援不友好

2、問題點背後涉及的技術原理

  • PG 支援邏輯複制, 内置了pub、sub訂閱功能, 但是針對同一個表隻能單向複制, 無法實作雙向複制(會有無限循環的問題)
  • 無法很好的解決資料沖突問題, 例如:
    • 更新操作, 在更新資料同步到目标節點之前, 目标節點對同一條記錄也執行了更新操作, 這個問題會導緻資料不一緻.

3、這個問題将影響哪些行業以及業務場景

  • multi-master 被應用于什麼業務場景?
    • 高可用場景, 多寫可以滿足無縫切換、更新需求.
    • 全球化、或者單元化部署的業務, 在多個IDC的應用可以就近通路本地資料庫, 多個IDC的資料庫通過星型複制實作統一整體.

4、會導緻什麼問題?

  • 無法支援多執行個體多寫, 所有寫操作需要發往中心資料庫, 可能産生較高的響應延遲.

5、業務上應該如何避免這個坑

  • 可以業務自己開發同步工具, 通過增加事務标記來标示從wal中解析出來邏輯記錄的初始節點. 避免無限循環的問題.
  • 使用一些複制工具來實作multi-master

6、業務上避免這個坑犧牲了什麼, 會引入什麼新的問題

  • 增加了複雜度
  • 工具本身的可靠性無法保障
  • 資料複制沖突沒有很好的解決方案
  • 全局序列沒有很好的解決方案

7、資料庫未來産品疊代如何修複這個坑

  • 希望核心層支援完備的multi-master解決方案

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