天天看點

MongoDB 最佳實踐

選擇合适的nosql資料庫并不是本文要讨論的内容,但是請你在使用nosql前做一些調查。沒有一個資料庫可以适合所有情況。這篇文章假設你選擇了mongodb。

MongoDB 最佳實踐

nosql 通用的最佳實踐

1. 徹底的測試

模拟你的生産環境,包括流量來進行測試。假如你的測試環境不能達到生産環境的壓力,你将無法發現性能瓶頸和架構缺陷。

2. rdbms 并不一定能遷移到 nosql

3. 考慮你的資料的一緻性和持久性需求

這一點很重要!mongodb通過多執行個體備份來提解決資料持久性問題。我們不推薦你在生産環境中隻使用一個mongodb執行個體。你必須了解為什麼要這麼做。

mongodb 最佳實踐

1. 始終啟用備份

備份能保證你應用的高可用性。假如你的一個節點down了,第二節點可以迅速啟用,你的應用不會中斷。

2. 使用最新版本

10gen在不斷的釋出更新,特别是2.0.x包含了很高的性能提升和并行改進,索引改進和bug修複。如果你還在使用 1.6.3的話,你應該盡快更新。

3. 不要在32位的系統上跑mongodb

4. 預設開啟日志

mongodb支援資料庫操作的提前日志(write-ahead journaling)。這個功能有助于災難恢複。

5. 注意你資料檔案的位置

你應該保證你的mongodb的資料檔案是存儲在實體驅動器上,例如 /data/mongodb。當然你也可以使用虛拟的驅動器,但是必須非常小心。因為它有可能會影響到你的叢集架構。我們建議你使用 amazon ebs 來存放你的資料庫檔案。

6. 保證足夠大的記憶體

為了保證整個叢集的性能,你要確定整個所有mongodb的工作執行個體(working set)包括索引可以完全裝入記憶體。如果你發現“page faults”的機率在增加,很有可能mongodb的資料量超出了你的記憶體。在這種情況下你有兩種選擇:加記憶體,或者建立分片叢集(sharding)。我們建議你先考慮加記憶體。

7. 保持 65% 以内的壓力

如果你發現你的叢集壓力達到了65%,那麼你應該考慮擴大你的叢集了。通常,你應該保證資料庫壓力低于65%。

8. 特别小心分片叢集

分片叢集需要你充分了解你應用的資料通路方式。你應該充分了解mongodb的分片工作方式,并且确認你确實需要這個功能。還有,選擇一個分片鑰匙(sharding key)是對于性能也是很重要的。

配置伺服器對于一個叢集的健康也是很重要的。在分片叢集的環境中,你必須有三台配置伺服器。永遠不要删除配置伺服器的資料,時常備份這些資料。這些配置伺服器也需要64位的環境。還有,不要把三台配置伺服器放在同一台機器上!

9. 使用 mongo mms 來圖形化的監控你的資料庫

如果你還沒有使用 mongo mms的話,我強烈推薦這個工具。10gen 正在大力開發這個産品。它提供了一個非常友好的可視化的界面來監控你的mongodb叢集。

10. mongodb 資源

技術總是在不斷進步,你需要市場關注這些資訊:

<b>原文釋出時間為:2012-03-01</b>

<b>本文來自雲栖社群合作夥伴“linux中國”</b>