1、MongoDB三種不同類型的集羣:
- 單節點:不需要可靠性和數據集比較小的選擇
- 可複製集:最低是3個節點(2個數據存儲和1個裁判節點)
- 分片集羣。最小配置有2個片,只有一個片會增加額外壓力而且無法利用分片優勢,每個分片應是可複製集,並且有3個配置服務器確保沒有單點故障,兩個mongos路由進程保證高可用性。當想要捆綁廉價服務器提升容量時使用分片集羣。
2、mongoDB服務器的組件必須運行在採取小端存儲的機器上。
3、磁盤性能重要的原因
- 高寫入工作負載。當數據寫入MongoDB時,服務器必須把數據寫入磁盤,對於高併發寫入的APP和慢速磁盤,寫入操作會影響整個系統的性能。
- 快速磁盤允許更快的服務器預熱。任意時候重啓服務器,都需要把數據集加載到內存裏。每個連續的MongoDB讀或寫都會加載新的虛擬內存到內存裏,直到物理內存佔滿。快速磁盤會加速過程,顯著提高MongoDB的性能
- 快速磁盤會調整應用程序必須的工作集大小,達到內存的比率(使用SSD磁盤,可能需要更小的內存或更大的容量)。
4、正式部署是使用RAID陣列。
5、如果要啓用日誌運行MongoDB服務器,記住下面要點:
- 日誌需要額外的寫操作
- 解決該問題的一個方法,獨立分配日誌磁盤,創建符號鏈接,指定日誌文件路徑。分區容量儘量大。達到120GB就夠了。
- 日誌無法擔保不丟失寫入數據,它只保證MongoDB恢復時的一致性狀態。
日誌每隔100ms會同步日誌到磁盤,所以意外關閉可能會丟失100ms中的寫入數據。
6、關於日誌的幾點:
- 是監控的第一個級別
- 用-logpath指定日誌路徑
- mongod啓動時用-vvvvvv(v)參數越多輸出信息越詳細
- 用-logappend啓動mongod,這會追加日誌到現有日誌,而不是默認模式,使用時間戳滾動文件
7、診斷命令
- 全局服務器統計信息:db.serverStatus()
- 統計當前運行的操作:db.currentOp()
- 包含空閒的操作:db.currentOp(true)
- 每個數據庫的計數器和活動統計:db.runCommand({top:1})
- 內存和磁盤的使用情況統計:db.stats()
8、診斷工具
- mongostat,全局系統統計信息(定時輪訓並顯示統計從每秒插入的數量到內存的使用量,再到B-樹頁缺失的頻率)
- mongotop,全局操作統計信息
- mongosniff(高級),監控MongoDB網絡流量
- bsondump,以JSON格式顯示BSON文件
9、備份MongoDB數據庫的通用規則
- 使用mongodump和mongorestore
- 複製原始數據文件
- 使用MMS備份
10、mongodump用於把數據庫內容寫爲BSON文件。mongorestore用於讀取這些文件並恢復。它們可以用於備份實時運行的數據庫(無需鎖住或關閉數據庫),或把它們指向到一個數據文件的集合上。