一、存儲路徑規劃
選擇合適的數據存儲路徑是MongoDB存儲規劃的基礎。默認情況下,Ubuntu上的MongoDB數據存儲在/var/lib/mongodb目錄,但可根據業務需求修改:
sudo mkdir -p /new/data/path(如/data/db)創建專用存儲目錄,避免與其他應用數據混淆;sudo chown -R mongodb:mongodb /new/data/path將目錄所有者改為mongodb用戶(MongoDB服務的運行賬戶),確保進程有讀寫權限;/etc/mongod.conf文件,找到storage.dbPath選項,將其值更新為新路徑(如/data/db);sudo systemctl restart mongod使配置生效,并通過日志(/var/log/mongodb/mongod.log)驗證是否啟動成功。二、存儲引擎選擇
存儲引擎決定了MongoDB的數據存儲方式、性能及功能支持,默認推薦使用WiredTiger(MongoDB 3.2+版本默認引擎):
三、緩存與內存優化
WiredTiger的性能高度依賴內存配置,需合理設置緩存大?。?/p>
/etc/mongod.conf的storage.wiredTiger.engineConfig下設置cacheSizeGB,建議值為物理內存的50%-75%(如16GB內存可設置為8GB);四、數據壓縮配置
WiredTiger支持數據壓縮,可顯著減少磁盤空間占用:
snappy(壓縮率約3-4倍,性能損耗?。?,如需更高壓縮率可選擇zlib(壓縮率約5-8倍,但會增加CPU負載);/etc/mongod.conf的storage.wiredTiger.collectionConfig下設置blockCompressor(如blockCompressor: snappy);五、磁盤I/O優化
磁盤I/O是MongoDB性能的瓶頸之一,需通過以下方式優化:
ext4或XFS文件系統(MongoDB官方推薦),其中XFS對大文件和高并發的支持更好,適合大規模數據存儲。六、數據文件管理
定期維護數據文件可釋放空間、提升性能:
db.dropDatabase()刪除空數據庫,db.dropCollection()刪除不再需要的集合;compact命令對集合進行碎片整理(如db.runCommand({compact: 'collectionName'})),釋放未使用的空間(需停機或使用副本集滾動操作);db.repairDatabase()命令修復(需停機,且需足夠磁盤空間)。七、擴展存儲方案
當單塊磁盤空間不足時,可通過以下方式擴展:
/mnt/newdisk),通過MongoDB的分片集群(Sharding)將數據分散到多個磁盤或服務器,提升存儲容量和查詢性能。八、監控與預警
持續監控存儲狀態可提前發現問題:
mongostat(查看實時操作計數器)、mongotop(查看集合級讀寫時間)監控數據庫性能;