Debian上MongoDB的定期维护任务
导读:Debian上MongoDB的定期维护任务清单 一 备份与恢复 安装工具与目录准备:安装 MongoDB 工具包(如 mongodb-org-tools 或 mongodb-clients),创建备份目录并设定权限(示例:/backup/...
Debian上MongoDB的定期维护任务清单
一 备份与恢复
- 安装工具与目录准备:安装 MongoDB 工具包(如 mongodb-org-tools 或 mongodb-clients),创建备份目录并设定权限(示例:/backup/mongodb,属主 mongodb:mongodb)。
- 全量与按库备份示例:
- 全库:mongodump --out /backup/mongodb/$(date +%Y%m%d%H%M%S)
- 指定库:mongodump --db your_db --out /backup/mongodb/$(date +%Y%m%d%H%M%S)
- 启用认证:添加 --username、–password、–authenticationDatabase admin
- 压缩与清理:备份完成后使用 tar 压缩归档,并删除未压缩临时目录,减少占用。
- 自动化与验证:使用 cron 定时执行(如每日 02:00),脚本输出重定向日志;定期做恢复演练或 dry-run 校验。
- 恢复命令:mongorestore /backup/mongodb//your_db。
- 策略建议:生产环境建议每日全量、每小时增量;保留策略可采用“近7天日备、近4周日备、近12个月月备”;启用副本集(至少3节点)提升可用性,并进行异地/加密备份与定期恢复测试。
二 日志轮转与归档
- 配置日志路径与级别:编辑 /etc/mongod.conf,设置 systemLog.destination、systemLog.path、systemLog.logAppend、systemLog.verbosity。
- logrotate 配置示例(/etc/logrotate.d/mongodb):
- 按日轮转并压缩,保留7天:
/var/log/mongodb/mongod.log {
daily
rotate 7
compress
missingok
notifempty
create 0644 mongodb mongodb
} - 按大小触发并配合 copytruncate(避免重启 mongod):
/var/log/mongodb/mongod.log {
daily
rotate 7
compress
missingok
notifempty
copytruncate
size 200M
postrotate
/bin/kill -SIGUSR1 $(cat /var/run/mongod.pid 2> /dev/null || cat /var/log/mongodb/mongod.lock 2> /dev/null)
endscript
}
- 按日轮转并压缩,保留7天:
- 要点:确保日志目录与文件的权限正确(如 mongodb:mongodb),并定期核查磁盘占用。
三 索引与查询性能维护
- 索引优化:为高频查询字段建立合适索引,避免过多索引;优先使用覆盖索引减少回表;使用 explain() 分析执行计划并优化慢查询。
- 索引重建:在维护窗口对碎片化严重的集合执行 db.collection.reIndex()(会短暂锁表,谨慎操作)。
- 监控与诊断:定期使用 mongostat、mongotop 观察吞吐、锁、延迟等指标,结合慢查询日志定位瓶颈。
四 更新与版本升级
- 升级前准备:先完成全量备份(mongodump),规划维护窗口并通知业务方。
- 执行升级:更新索引与软件包索引后,执行 sudo apt-get install --only-upgrade mongodb-org;升级后使用 mongod --version 或 rs.status()/db.version() 校验。
- 服务管理:使用 systemctl start/stop/restart mongod 控制实例;如为副本集,可按需在主节点维护前进入维护模式:db.runCommand({ replSetMaintenance: 1} ),完成后退出:db.runCommand({ replSetMaintenance: 0} )。
- 回滚预案:保留上一个稳定版本的包与备份,出现异常及时回滚。
五 监控健康检查与容量规划
- 运行状态:例行检查 mongostat、mongotop 输出,关注连接数、队列、页面错误、复制延迟等关键指标。
- 日志巡检:定期筛查错误与慢查询,结合日志级别与采样策略定位问题。
- 容量与性能:结合 WiredTiger 缓存(storage.wiredTiger.engineConfig.cacheSizeGB)、存储 I/O、索引大小与数据增长趋势进行容量规划与参数调优。
- 高可用:生产环境建议部署副本集(至少3节点),并定期演练故障切换与恢复流程。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上MongoDB的定期维护任务
本文地址: https://pptw.com/jishu/758351.html
