1. 配置数据持久化存储
确保MongoDB数据文件的存储路径有效且有足够权限,是防止数据丢失的基础。编辑MongoDB配置文件(/etc/mongod.conf),确认storage.dbPath指向稳定的存储目录(如/var/lib/mongodb),并启用WiredTiger存储引擎(默认开启)。WiredTiger通过预写日志(WAL)和检查点机制,确保数据在宕机后可通过日志恢复。同时,开启journal.enabled: true(默认开启),保证写入操作的原子性和持久性。
2. 启用副本集(Replica Set)
副本集是MongoDB原生提供的高可用机制,通过数据复制(至少3个节点:1主节点+2从节点)实现冗余。当主节点故障时,从节点会自动选举新的主节点,确保数据持续可用。配置步骤:
/etc/mongod.conf中添加replication.replSetName: "rs0"(名称需一致);rs.initiate()初始化副本集;rs.add("node2_ip:27017")、rs.add("node3_ip:27017")添加从节点;rs.status()验证副本集状态(确保所有节点状态为SECONDARY或PRIMARY)。3. 定期执行数据备份
使用mongodump工具定期备份数据,支持全量备份(备份所有数据)和增量备份(备份自上次备份后的变更数据)。示例命令:
mongodump --host localhost --port 27017 --out /backups/mongodb/full_$(date +%Y%m%d);mongodump --host localhost --port 27017 --since "2025-09-01T00:00:00Z" --out /backups/mongodb/incremental;--gzip选项减少存储空间占用;cron定时任务(如每天凌晨2点执行全量备份)实现自动化。4. 验证备份有效性
定期测试备份文件的恢复能力,确保备份数据可正常使用。使用mongorestore工具进行模拟恢复(--dryRun选项),例如:mongorestore --dryRun /backups/mongodb/full_20250910。通过恢复测试可及时发现备份文件损坏或配置错误的问题。
5. 监控与告警
通过MongoDB自带的日志(/var/log/mongodb/mongod.log)监控数据库运行状态,重点关注写入延迟、复制延迟、节点故障等异常信息。使用tail -f /var/log/mongodb/mongod.log实时查看日志,或通过监控工具(如Prometheus+Granafa)设置告警规则(如主节点宕机、备份失败时发送邮件/短信通知)。
6. 加密与异地备份
openssl等工具加密(如tar -czvf - /backups/mongodb | openssl enc -aes-256-cbc -salt -out /backups/mongodb_encrypted.tar.gz.enc),防止数据泄露;