Debian系统下MongoDB定期维护的关键任务及实施方法
备份是MongoDB维护的核心,需结合全量备份、自动化及验证确保数据安全。
mongodump/mongorestore):sudo apt update && sudo apt install mongodb-clients -y mongodump将数据库导出为BSON格式,按日期创建子目录存储(如/backup/mongodb/20251019/):sudo mongodump --out /backup/mongodb/$(date +%Y%m%d) --db your_db_name;--collection your_collection;.tar.gz(节省空间):sudo mongodump --out /tmp/mongodb_$(date +%Y%m%d) && sudo tar -czvf /backup/mongodb_$(date +%Y%m%d).tar.gz -C /tmp mongodb_$(date +%Y%m%d) crontab设置定期任务(如每天凌晨2点执行全量备份):sudo crontab -e # 添加以下行(需替换为实际备份路径) 0 2 * * * /usr/bin/mongodump --out /backup/mongodb/$(date +\%Y\%m\%d) && /usr/bin/tar -czvf /backup/mongodb_$(date +\%Y\%m\%d).tar.gz -C /backup mongodb_$(date +\%Y\%m\%d) sudo systemctl stop mongod;mongorestore还原指定数据库:sudo mongorestore /backup/mongodb_20251019/your_db_name;sudo systemctl start mongod。定期升级MongoDB以获取安全补丁和性能改进,需严格遵循备份→更新→验证流程。
sudo mongodump --out /backup/mongodb/pre_upgrade;sudo apt update。apt升级mongodb-org包(Debian官方仓库的MongoDB包):sudo apt install --only-upgrade mongodb-org -y mongod --version 合理管理日志可防止磁盘空间耗尽,并便于故障排查。
/etc/mongod.conf,设置日志输出到文件并追加内容:systemLog: destination: file path: /var/log/mongodb/mongod.log logAppend: true /etc/logrotate.d/mongodb配置文件,设置每日轮转、保留7天、压缩旧日志:/var/log/mongodb/mongod.log { daily rotate 7 compress delaycompress missingok notifempty create 0640 mongodb mongodb } sudo logrotate -vf /etc/logrotate.d/mongodb mongodb用户,限制访问权限:sudo chown mongodb:mongodb /var/log/mongodb/mongod.log sudo chmod 0640 /var/log/mongodb/mongod.log 定期监控性能可及时发现瓶颈,提升数据库响应速度。
mongostat:每秒显示操作次数、读写延迟等实时指标(如mongostat 1);mongotop:统计集合级别的读写时间(如mongotop 1)。mongodb_exporter的指标,可视化监控内存、CPU、磁盘使用率及慢查询。/etc/mongod.conf中设置operationProfiling.slowOpThresholdMs: 100),定期分析慢查询并优化索引。db.collection.stats()查看索引大小,删除未使用的索引(db.collection.dropIndex("index_name")),为高频查询字段创建复合索引。若需执行集群维护(如硬件升级、配置变更),可将节点置于维护模式,避免影响服务。
use admin db.runCommand({ replSetMaintenance: 1 }) db.runCommand({ replSetMaintenance: 0 })