2011-07-04 19 views
3

我需要複製PostgreSQL數據庫服務器,如下所示:哪個PostgreSQL的複製解決方案中使用了我的具體情況

  1. 兩個服務器彼此相鄰,另 - 一個是船長和其他備用。如果主站發生故障,備用站接管。從主機到從機的複製需要是故障保護,因此是同步的。除非已經成爲主人,否則待機不會用於任何查詢。所以,不需要高可用性/負載平衡。

  2. 在遠程位置還有另一臺備份服務器。來自上述主服務器的數據將被異步並批量複製到該遠程服務器。在這個複製中,時間並不是一個因素 - 幾個小時就好了。該服務器將僅用於備份。

我已經研究了PostgreSQL文檔以及Google的當前可用複製解決方案,但無法確定我需要哪種同步異步解決方案組合。

我想到的最接近的是使用場景1的pgpool-II和場景2的猛獁象。但是,由於pgpool是基於語句的,包含rand()和now()的查詢會發生什麼?

請注意,我寧願使用免費的和開源的複製工具。

此外,只是一個側面的問題 - 根據上面的情況1,當主站發生故障時,備用站將接管。之後主從角色會被顛倒,還是在主服務器恢復後,從服務器會回到待機狀態?

任何建議將不勝感激。謝謝。

回答

2

您沒有提及有問題的服務器是否在特定版本上,或者這是否是一個可自由選擇版本的新項目。答案根據這些信息而有所不同。

如果你從一個乾淨的石板開始,我會建議基於PostgreSQL 9.1 beta的設計。最終版本將在您準備進入生產環境並且內置二進制同步複製之前很久纔會發佈。

我幾年來一直在PostgreSQL中使用內置異步複製,幾乎與您描述的完全相同,並且它對我來說一直非常穩定。使用熱備用9.0,它變得更好,配置和維護變得更容易。 9.1提供了您需要的唯一缺失的部分。

但是,如果您嘗試複製現有服務器,那麼對於「checkpoint_timeout」的積極設置的內置異步複製可能足以支持未歸檔的WAL文件,直到您可以升級到9.1。

這裏的底線是,您可以準確得到您想要的與股票PostgreSQL 9.1 - 不需要第三方產品。

至於故障轉移,它不是一個自動過程,你需要自己處理。我建議在故障切換後,切換兩臺機器的角色,直到下一次故障切換事件或在計劃中斷期間受控的手動故障切換,但使用時間較長。同樣,這不是自動的,很多都是由管理員管理的(通過shell腳本推測)。

+0

請將您的評論移至實際答案 –

+0

Yah,我的項目是新的,我可以選擇服務器版本。讓我試試9.1同步複製和異步複製。而且,我似乎需要在相當長一段時間內使用故障轉移處理來學習如何執行它。 :) –

4

我建議使用DRBD的場景1,要麼9.0內置複製或Slony聚對方案2

的PostgreSQL 9.1(尚未發佈),沒有其他同步複製解決方案可用,DRBD是之前廣爲此目的而建立。結合PostgreSQL監控和切換所需的所有腳本隨附的Pacemaker或Heartbeat,您擁有一個非常強大且相當易於管理的解決方案。 (事實上​​,即使在9.1出現之後,我也會考慮繼續使用DRBD;它會輕鬆很多,並且有更長的記錄)。

對於跨站點異步,您可以嘗試內置複製PostgreSQL 9.0,可能與repmgr一起用於監控和管理。或者,你可以嘗試(現在有點)老派的Slony,但我想這會對你的需求更加複雜。

+0

好吧,我會嘗試9.1同步複製和DRBD,看看哪一個更容易。感謝您指出DRBD。 :) –

相關問題