我有兩臺安裝了PostgreSQL 9.5
數據庫的Linux服務器(A
和B
)。我配置了熱備份模式,如documentation中所述。在此設置中,A
被配置爲主設備,B
處於熱備份模式。這是行之有效的行爲如預期。如何在JavaEE應用程序中爲PostgreSQL Hot Standby設置配置連接故障轉移?
現在,我想通過TomEE
數據源到該數據庫設置通過Hibernate
/JDBC
連接一個獨立的應用程序Java EE
(不同的機器上運行)。
的PostgreSQL driver文檔狀態,使多臺主機可以在JDBC連接URL指定:
jdbc:postgresql://host1:port1,host2:port2/database
所以我的問題是:
- 如果
A
向下,B
手動切換到正常操作模式,我的應用程序是否仍然能夠使用上述的jdbc連接url進行數據庫操作? - 我必須配置其他參數/庫嗎?
注意:從我學到的各種資源中,PostgreSQL
不支持自動故障轉移(除非在此過程中涉及第三方軟件 - 請參閱下面的註釋)。出於這個原因,故障轉移需要手動執行,這對於這個特定的用例來說是可以的。
EDIT-1:
我決定測試pgBouncer
(如在意見提出)爲一種解決方法。它適用於我的使用情況。我寫了一個看門狗腳本,它可以自動的手動步驟:
- 汽車無校驗,如果
A
仍然活着,並監聽傳入的連接。 - 如果發生故障切換,請將
B
切換到正常運行模式,並讓它成爲新的主站並重新啓動服務。 - 將
pgBouncer
設置更改爲指向B
而不是A
並重新啓動服務。
但是,如果有人有沒有第三方軟件的經驗,我還會感興趣嗎?
最簡單的設置是在兩臺服務器之前放置pgBouncer或pgPool之類的東西,讓應用程序通過它連接。 –
@a_horse_with_no_name感謝您的提示。你現在有沒有什麼有用的指南來設置pgPool(來自Ubuntu倉庫),你會推薦? – rzo
我有一個主和一個只讀熱stanby postgresql 9.6服務器的類似設置。有一個pgbouncer在他們面前運行。我可以通過更改pgbouncer配置文件的一行來輕鬆切換到新的主文件。 我已閱讀有關自動故障轉移羣集(使用corosync和pacemaker)的論文,但對我而言這些文件太複雜。如果您有高級Linux系統管理經驗,您應該嘗試一下。 http://clusterlabs.org/ –