一、存储路径规划
选择合适的数据存储路径是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的性能高度依赖内存配置,需合理设置缓存大小:
/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(查看集合级读写时间)监控数据库性能;