Hosting

兩台鏡像數據庫伺服器,或一台功能強大的伺服器

  • July 19, 2011

我正在考慮為我的一個應用程序設置一個單獨的數據庫伺服器,該應用程序目前在 3 個伺服器上執行;1 個前端伺服器和 2 個應用程序/數據庫伺服器。但出於性能原因,我希望將數據庫移動到它自己的機器上。

所以歸根結底,我最好是獲得兩台伺服器並將它們設置為彼此的副本。或者只是一台伺服器,但使其功能提高一倍?

到目前為止我想到的事情;

使用一台伺服器:

  • 更易於管理
  • 更多的 CPU/記憶體/磁碟可用於數據庫,因為作業系統只會佔用大量資源
  • 更多儲存空間(如果數據庫被複製,我需要 2 倍的磁碟儲存量來儲存相同的數據)
  • 更便宜(租用的伺服器只有一點點,但我想購買的伺服器更便宜)

有兩台伺服器:

  • 更好的冗餘(核心恐慌/磁碟故障/作業系統故障/網路故障和整個數據庫仍然可以工作,但可能會慢一點)
  • 每台伺服器的磁碟/網路 IO 更少(這會使其更快嗎?)

針對我的情況的一些技術細節;

這些伺服器將在名為 StormOnDemand 的雲服務上執行,因此我們在硬體可靠性方面不會遇到太多問題。我們還可以根據需要垂直上下縮放。

我們使用 4 種不同的數據庫系統;Postgresql、MongoDB、Redis 和 Memcached*

上次我檢查時,我們在 Postgres 上平均每天超過 2 次交易,在 Mongo 上大約 2.5 次,不確定 Redis 和 Memcached,但我們都將它們用於記憶體,所以我想這是關於相同的。

伺服器都通過 1GB/s 的本地網路連接。

我想說,這些數據庫大約是中等大小(Postgresql:32GB,MongoDB:16GB,Redis 和 Memcached 都使用記憶體進行儲存,但我認為它們目前執行 Redis:12GB 和 4GB)

我希望得到的伺服器將是單個伺服器的 8CPU 和 30GB RAM,或者兩台伺服器的 4CPU 和 8GB RAM

對於冗餘,它是一個 Web 應用程序,我們的絕大多數訪問者都在重複訪問,因此,雖然我們不希望停機,但我們會很高興每個月有幾個小時的時間來節省我們從單個伺服器中獲得的成本. 在使用 SOD 執行的 6 個月中,我們從未遇到過任何停機時間,但這並不是說將來不會發生。

如果我排除了任何有用的細節,我很樂意提供它們,但我已嘗試盡可能多地包含它們。

*Memcached 將繼續在應用程序伺服器上執行,我們將其用作一種“本地記憶體”,因為它不會跨伺服器複製/分片,使用 Redis 作為分佈式記憶體

通常,數據庫受益於大鐵。作為一般經驗法則,添加額外的框有助於 Web 和應用程序伺服器的性能 - 但對於數據庫,答案通常是獲得更大、更快的機器。

但另一方面,擁有更多等效節點總是可以提高可用性和性能 - 考慮一下,如果您在一台閃亮的伺服器上花費 3000 美元,它可能在其生命週期內失敗的可能性為(例如)1%。或者您可能會購買 2 台故障機率為 5% 的基本規格機器。你最好把錢花在閃亮的盒子上嗎?如果您查看兩台基本機器發生故障的機率,它會小很多 - 0.050.05100=0.25%,即可靠度的 4 倍。

但是很大程度上取決於您使用的 DBMS。NoSQL 數據庫旨在跨大量伺服器擴展。MySQL 複製相對可靠和高效。但是 mysql 和 nosql 數據庫都傾向於不實時複製。如果您需要跨集群的一致性,那麼您需要用於多個節點的 Oracle RAC 之類的東西 - 以及 IME,它會產生大量的節點間喋喋不休 - 在這種情況下,您最好購買更大的盒子。

所以在你的情況下,mongoDB 和 Redis 肯定會支持多節點解決方案。我對 PostGreSQL 集群的了解有限,但考慮到它支持查詢的一致性,我希望它的行為更像 Oracle(即本地磁碟和網路 I/O 的數量膨脹)。

我會說您的數據集偏小 - 實際上,我很擔心您使用 4 種不同的基板來管理數據 - 並且強烈建議合併它們

引用自:https://serverfault.com/questions/291824