2016-08-18 52 views
4

我試圖建立一個架構,2個數據庫,說預覽現場,有完全相同的模式。用例是可以對預覽數據庫進行編輯,然後在經過審覈和批准後將其推送到直播數據庫。生產應用程序將從live數據庫中讀取。PostgreSQL的 - 定期從一個數據庫將數據複製到另一個

什麼是將預覽數據庫中的所有數據推送到實時數據庫的最合適的方式沒有會導致實時數據庫關閉?理想情況下,從預覽到現場的副本將是一個原子事務。

我已經在MSSQL中使用過這種類型的設置,但我對Postgres相當陌生。所以我很樂於聽到其他方式來設計這個(Schemas也許?)。

編輯:使用單獨數據庫的主要原因是我可能需要超過1個目標數據庫(而不僅僅是一個「活」數據庫)。我也可能需要在不改變源數據庫模式的情況下即時切換目標數據庫。

+1

爲什麼要用兩個數據庫?在單個數據庫上執行它非常簡單且高效。 – Patrick

+0

在PG中,您可以通過將所有語句包裝在單個事務中(「MVCC」模型)來進行「原子」操作(從其他用戶的角度來看)。 – Patrick

+0

使用單獨的數據庫有許多原因 - 預覽數據庫和實時數據庫可能具有不同的網絡和安全要求(防火牆等)和/或需要託管在不同的機器上。另一個原因是,這種架構可以輕鬆實現多個目標(而不僅僅是實況),而無需添加額外的表格。 – Joel

回答

0

我認爲你要找的是一個「熱備份」。這將是一個單獨的Postgresql實例,可能在同一臺服務器上,但通常不是,這是主服務器的近實時副本。

在廣泛的筆觸中,這是通過將二進制事務日誌從主服務器傳送到備份服務器,然後在那裏「重播」它們來完成的。傳輸日誌的確切機制可能會根據您的要求而有所不同。

幸運的是,在此的文檔是優秀:

https://www.postgresql.org/docs/9.3/static/warm-standby.html

https://www.postgresql.org/docs/9.0/static/hot-standby.html

相關問題