2010-11-11 43 views
4

我目前正在運行一個傳統的MySQL主/從設置與約90GB的數據。我們的應用程序的流量正在迅速增加,而且這個設置已經顯示出放緩的跡象。我非常喜歡嘗試MongoDB,而且我對自動分片功能感到特別興奮。在單個服務器中運行多個MongoDB分片是否有任何好處/缺陷?

但是,我目前只有2個(專用)數據庫服務器可供我使用,並且絕對有一個必須用於複製。所以這裏是我的問題:

如果我在同一臺服務器上運行MongoDB的多個實例作爲分片,我是否會享受到更小的分片數據集的好處?或者是否會由於增加的負載/內存要求而導致性能下降?

回答

6

MongoDB的Kristina Chodorow有一個series of blog posts about sharding and replica sets in MongoDB。她提到你幾乎從不想分片,至少在你嘗試複製設置之前是這樣。請閱讀她的副本集系列:part 1,part 2,part 3

+0

博客已從snailinaturtleneck.com遷移到kchodorow.com。請使用存檔[列表](https://www.kchodorow.com/blog/archives/)更新鏈接。 – ankshah 2017-06-30 07:30:29

+0

@ankshah謝謝,修復。 – Theo 2017-07-01 08:11:12

2

爲什麼不在兩臺服務器上運行碎片,並在每臺服務器上都有第二個mond實例來複制另一個碎片?這會讓你分裂和冗餘。如果一臺服務器發生故障,另一臺服務器將擁有副本。

如果每個mongod實例數據文件夾位於不同的磁盤上,或者如果整個數據集適合內存並且您擁有多個內核,則分片可能很有用。

1

從2節點副本集開始,看看Mongo是否不會給您更好的插入/更新速度。如果寫入速度更快(他們可以),那麼你將能夠處理更多的負載。在提高性能方面,處理更多的負載可能是您所需要的。

需要在範圍內分片的唯一原因是如果您不知何故需要敲入更多的寫入操作,並且您還沒有完成IO操作(這很罕見)。

我會建議簡單地從遷移到Mongo副本集(主/從屬支持,但「不太好」)。

相關問題