2011-09-26 74 views
2

我花了相當多的時間試圖瞭解如何在postgresql數據庫服務器之間實現負載平衡(分配數據庫處理負載)之後,我來到這裏。postgresql的負載平衡/分配

我有一個postgresql系統,每秒鐘可以吸引大約100個事務,而且這個數量可能會增長。請注意,我的情況有很多更新+插入+選擇。所以我的任何解決方案都需要迎合所有插入/更新和讀取。

可有人建議我,如果有任何簡單(或複雜的)解決方案,以實現對上述方案?

回答

2

如果您的數據庫小於100GB,那麼您應該首先嚐試從一臺計算機獲得最大化。

您將需要:

  • 一個良好的存儲控制器,大容量電池支持的高速緩存;
  • 一堆RAID10中的快速磁盤;
  • RAID10 for WAL中的另一堆磁盤;
  • 更多的RAM比你有數據;
  • 儘可能多的快速處理器核心,你可以。

你可以用這臺計算機做幾千個tps。

如果它還不夠,我會嘗試添加第二個熱備份服務器與流式複製。您將使用它來運行長時間運行的只讀報告查詢,備份等,這樣您的主服務器就不必執行這些操作。

只有當它證明不夠時,您應該嘗試添加更多流式複製熱備用服務器來平衡只讀查詢。雖然這會很複雜 - 因爲它是異步的,因此在主站確認和備用站點之間發生變化時會有延遲。你必須在你的客戶端應用程序中處理它。你的設置將變得更加複雜。

+0

謝謝,但對我來說,很顯然我要跨越1000 tps的水平。那麼我應該忽略上面提到的Skype解決方案嗎?請明白,我也有「相同數量的插入+更新以及讀取」。 – Muthu

+0

閱讀是否可以看到稍微過時的數據 - 可能是幾秒鐘?如果不是,你將不得不爲最繁忙的表使用分片或集羣 - plproxy可能會幫助你,但它肯定不會容易或便宜(而且100k $在這裏便宜)。僱用[顧問](http://www.postgresql.org/support/professional_support_northamerica)。 – Tometzky