2017-02-28 70 views
0

我想說,我不是DBA,所以對於技術知識上的差距抱歉。如何從多個postgres數據庫創建只讀副本到單個數據庫?

我在一個微服務體系結構中工作,我們有大約十幾個應用程序,每個應用程序都支持它的Postgres數據庫實例(如果有幫助,它在RDS中)。每個微服務的數據庫都包含一些表格。假設在任何模式/表中沒有命名衝突,並且跨數據庫沒有任何數據分片是安全的。

一個我們一直運行到是想分析/加入跨數據庫的數據的問題。目前,我們依靠第三方工具緩存我們的數據,並可以跨多個數據庫源(通過共享緩存)進行查詢。

是否可以從我們所有的生產數據庫創建模式/表的讀取副本並讓它們可用於在單個數據庫中查詢?

還有沒有其他的方法來配置的Postgres或RDS使在我們的數據庫連接可能嗎?

回答

0

是否有可能從我們所有的生產數據庫的創建模式/表的只讀副本,並讓他們可以在一個單一的數據庫來查詢?

是的,這是可能的,它實際上是很容易的。

設置一個充當主服務器的Postgres服務器。

對於每個遠程服務器,創建一個foreign server,然後使用它創建一個foreign table,使數據可以從主服務器訪問。

如果您有多個服務器的多個表應該在主被視爲一個表,你可以設置的繼承,使所有這些表看起來像一個。如果你可以定義一個「分片」鍵來標識這些服務器之間的獨特屬性,你甚至可以讓Postgres只從特定服務器請求數據。

所有的外表都可以連接,就好像它們是本地表一樣。根據查詢的種類,可以將一些(或很多)過濾器和連接標準推送到遠程服務器以分發工作。

由於Postgres Foreign Data Wrapper是可寫的,您甚至可以從主服務器更新遠程表。

如果遠程訪問和連接速度太慢,您可以創建基於遠程表的物化視圖創建數據的本地副本。然而,這意味着它不是實時拷貝,你必須管理表格的定期刷新。

其他(更復雜)選項是BDR項目或pglogical。似乎邏輯複製將被內置到next Postgres版本(將在今年年底發佈)。

或者你可以使用一個分佈式的,無共享系統,如Postgres-XL(這可能是最複雜的系統安裝和維護)

相關問題