Postgresql

關於複製 RDS PostgreSQL 實例的建議?

  • November 21, 2018

在我的公司,我們正在尋找將 PostgreSQL 實例複製到另一個數據庫中的替代方法。在我們的場景中,我們有一個生產PostgreSQL 9.5 數據庫伺服器,新條目一直在進來,我們必須將它們同步到副本伺服器

但我們面臨一些挑戰:

  • 我們需要能夠寫入副本數據庫,因為我們也希望包含來自其他來源的數據。我們嘗試使用 AWS 自己的 PostgreSQL,但顯然它不允許寫入副本。
  • 它需要複製 PostgreSQL 特殊類型,例如計算索引、列舉類型和 JSON 列。我們研究過的一些工具不適用於這些類型。
  • 此外,此工具必須在沒有超級使用者權限的情況下執行,因為數據庫託管在 AWS RDS 中,並且它不會為您提供超級使用者權限。

我們研究了幾種解決方案,甚至編寫了自己的解決方案,但是我們在副本中存在一致性問題(即一些失敗的更新檔),以及一些ALTER TABLE無法複製的s。我們還沒有找到一種方法來隔離和糾正原始碼中的這些問題。

鑑於所有情況,我們正在研究替代方案,並希望聽到有類似問題的人的意見。

在徹底研究了這個問題之後,我們選擇了 AWS 自己的Database Migration Service。它允許我們從生產源實例到目標操作副本的 CDC 複製,這兩個 PostgreSQL 實例。在操作副本中,我們也可以複製其他類型的數據。

它還具有能夠複製到其他類型的目標的額外好處,例如 MySQL、S3 或 RedShift(我們也使用)。

缺點是它與 AWS 生態系統相關聯,但對於我們的案例來說還可以,因為我們所有的其他東西都已經在 AWS 上。請注意,只有 DMS 和 RDS 必須在 AWS 上執行。您的目標 PostgreSQL 實例可以託管在 AWS 之外。

我認為pglogical擴展可以用來解決你的問題——將來,當它被擴展以允許複製使用者時。目前它需要超級使用者權限

pglogical 是一個完全作為 PostgreSQL 擴展實現的邏輯複製系統。

另外,從他們的文件中:

完全集成,它不需要觸發器或外部程序。這種物理複製的替代方法是一種使用發布/訂閱模型進行選擇性複制來複製數據的高效方法。

支持的案例有:

  • 主要版本之間的升級(鑑於上述限制)
  • 完整的數據庫複製
  • 使用複制集選擇性複製表集
  • 從多個上游伺服器收集/合併數據

引用自:https://dba.stackexchange.com/questions/160116