Ubuntu MongoDB的自动化运维怎么做
导读:Ubuntu 上 MongoDB 自动化运维实践 一 服务自启动与进程守护 使用 systemd 管理 MongoDB,创建或确认服务单元文件 /lib/systemd/system/mongod.service,关键配置示例: [Un...
Ubuntu 上 MongoDB 自动化运维实践
一 服务自启动与进程守护
- 使用 systemd 管理 MongoDB,创建或确认服务单元文件 /lib/systemd/system/mongod.service,关键配置示例:
- [Unit] 中 After=network.target
- [Service] 中 User=mongodb、Group=mongodb、ExecStart=/usr/bin/mongod --config /etc/mongod.conf、Restart=always、RestartSec=3
- [Install] 中 WantedBy=multi-user.target
- 启用与验证:
- 重载并开机自启:sudo systemctl daemon-reload & & sudo systemctl enable mongod
- 启动与状态:sudo systemctl start mongod & & sudo systemctl status mongod
- 实时日志:journalctl -u mongod -f
- 简易自愈监控脚本(示例):
- 脚本:if systemctl is-active --quiet mongod; then echo “MongoDB is running.”; else echo “MongoDB is down. Restarting…”; sudo systemctl restart mongod; fi
- 定时:crontab -e 添加 */5 * * * * /path/to/monitor_mongod.sh
- 常见问题速排:配置文件权限(chown mongodb:mongodb /etc/mongod.conf)、端口冲突(lsof -i :27017)、日志过大(journalctl --vacuum-size=100M)。
二 自动化备份与恢复
- 备份策略选型
- 逻辑备份:使用 mongodump,适合中小规模、灵活恢复;命令示例:mongodump --db mydb --out /backup/mongodump/20250107
- 文件系统快照:如 LVM 快照,速度快、适合大库;流程:创建快照、挂载、拷贝、卸载、删除快照
- 企业级工具:如 Percona Backup for MongoDB(PBM),支持 S3 存储与增量/时间点恢复
- 定时备份脚本示例(含压缩与保留策略)
- 关键点:使用具备 backup 角色的账号;避免硬编码密码(可用环境变量或配置文件);记录日志;压缩与清理旧备份
- 示例片段:
- BACKUP_DIR=“/backup/mongodb”;DATE=$(date +%Y%m%d_%H%M%S)
- mongodump --uri=“mongodb://$MONGO_USER:$MONGO_PASS@localhost:27017/$DB” --out $BACKUP_DIR/$DATE
- 成功/失败写日志;tar -zcvf $BACKUP_DIR/$DATE.tar.gz $BACKUP_DIR/$DATE
- 清理:find $BACKUP_DIR -type d -mtime +30 -exec rm -rf { } ;
- 定时:crontab -e 添加 0 2 * * * /usr/local/bin/mongodb_backup.sh
- 恢复与验证
- 逻辑恢复:mongorestore --db mydb /backup/mongodump/20250107/mydb
- 时间点恢复(需 oplog):mongorestore --oplogReplay /backup/oplog-replay/
- 定期做恢复演练与校验,确保备份有效与可用。
三 监控与告警
- 轻量自研监控
- systemd 自检 + 日志观测(journalctl)+ 定时脚本自检(见第一部分),适合小规模或起步阶段
- Zabbix 监控示例
- 安装 Zabbix Agent;在 /etc/zabbix/zabbix_agentd.conf 配置 Server/Hostname
- 自定义键值(示例):
- UserParameter=mongodb.connections, mongo --eval “printjson(db.serverStatus().connections)”
- UserParameter=mongodb.queries, mongo --eval “printjson(db.serverStatus().opcounters)”
- UserParameter=mongodb.storage, mongo --eval “printjson(db.serverStatus().storageEngine)”
- Zabbix Server 端创建监控项与触发器(如连接数突增、查询异常、存储引擎异常等),实现可视化与告警。
四 远程访问与安全加固
- 远程连接配置
- 修改 /etc/mongod.conf 中的 bind_ip(如 0.0.0.0 或指定内网 IP),端口默认 27017
- 防火墙放行:sudo ufw allow 27017/tcp 或云安全组放通
- 重启服务并验证:sudo systemctl restart mongod;ss -lntp | grep 27017
- 安全最佳实践
- 启用 认证 与 角色权限(创建具有 backup 角色的专用账号用于备份)
- 限制来源 IP、使用 TLS/SSL 加密传输、最小权限原则、定期轮换凭据
- 备份目录与传输链路加密,避免明文存储与传输。
五 一键化落地清单
- 初始化与自启:部署官方仓库版本 → 放置并校验 mongod.service → systemctl enable/start → journalctl 观察
- 备份流水线:编写备份脚本(含压缩与 30 天保留)→ 配置 crontab 每日 2:00 → 建立备份验证与清理例行任务
- 监控告警:部署 Zabbix Agent → 配置自定义键值 → Server 端建立模板/触发器 → 接入邮件/企业微信/钉钉
- 远程与安全:按需开放 bind_ip 与防火墙 → 开启认证与最小权限 → 备份账号专号专用、凭据托管
- 例行巡检:每周查看 journalctl 与慢查询日志、每月做恢复演练与容量评估、每季度升级小版本与安全补丁
以上方案覆盖 自启动与自愈、定时备份与恢复、监控告警、远程与安全 四大核心域,可直接按规模与合规要求裁剪落地。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu MongoDB的自动化运维怎么做
本文地址: https://pptw.com/jishu/788869.html
