Ubuntu系统中,MongoDB的主配置文件为**/etc/mongod.conf**,所有与数据持久化相关的参数均在此文件中设置。修改配置后需重启服务(sudo systemctl restart mongod)使更改生效。
作用:指定MongoDB数据文件的本地存储目录(如WiredTiger引擎的 data files、索引文件等)。
配置示例:
storage:
dbPath: /var/lib/mongodb
注意事项:
sudo chown -R mongodb:mongodb /var/lib/mongodb设置);作用:开启预写日志(Write-Ahead Logging, WAL),记录所有对数据的修改操作(如插入、更新、删除)。当日志写入磁盘后,才会向客户端返回“写入成功”响应。
配置示例:
storage:
journal:
enabled: true
重要性:
作用:WiredTiger是MongoDB默认的存储引擎(从3.2版本起),提供文档级锁定、事务支持和数据压缩功能,显著提升性能与资源利用率。
配置示例:
storage:
wiredTiger:
engineConfig:
cacheSizeGB: 4 # 设置WiredTiger缓存大小(建议为物理内存的50%-75%)
关键参数:
cacheSizeGB:控制WiredTiger缓存的大小(默认为物理内存的50%)。增大缓存可减少磁盘IO,但需预留足够内存给系统和其他进程。作用:通过应用程序驱动设置,强制要求写操作在持久化到磁盘后再返回成功,避免因网络延迟或进程崩溃导致数据丢失。
配置方式:
writeConcern: { j: true }(如Node.js示例):const { MongoClient } = require('mongodb');
async function run() {
const client = new MongoClient('mongodb://localhost:27017', {
writeConcern: { w: 'majority', j: true } // 等待多数节点确认且日志刷盘
});
try {
await client.connect();
const result = await client.db('test').collection('users').insertOne({ name: 'Alice' });
console.log('Insert success:', result.insertedId);
} finally {
await client.close();
}
}
run().catch(console.error);
参数说明:
j: true:强制等待Journal日志写入磁盘;w: 'majority':确保写操作被多数节点确认(仅适用于复制集,提升数据可靠性)。作用:通过多节点同步实现数据冗余,即使主节点宕机,副本节点可自动切换为主节点,确保数据持续可用。
配置步骤:
/etc/mongod.conf中设置replication.replSetName: myReplSet;rs.initiate()初始化复制集。作用:通过逻辑备份(mongodump/mongorestore)或物理备份(复制数据文件)保存数据副本,应对逻辑错误(如误删除)或物理灾难(如磁盘损坏)。
常用工具:
mongodump:导出数据库/集合为BSON文件(逻辑备份);mongorestore:从BSON文件恢复数据。#!/bin/bash
BACKUP_DIR="/backup/mongodb/$(date +%Y%m%d)"
DB_USER="admin"
DB_PASSWORD="password"
mongodump -u $DB_USER -p $DB_PASSWORD --archive="$BACKUP_DIR.dump"
find /backup/mongodb -name "*.dump" -mtime +7 -exec rm {} \; # 保留7天备份
/var/log/mongodb/mongod.log),确认无“journaling disabled”或“storage path not found”等错误;db.serverStatus().storageEngine(Mongo Shell),验证WiredTiger引擎是否启用及缓存大小是否符合预期。mongod.log,关注“journal replay”“checkpoint”等关键字(判断数据恢复或刷盘是否正常);mongostat工具监控IO性能(如inserts/sec、flushes/sec),及时调整缓存大小或磁盘性能。