Ubuntu 下 MongoDB 定期维护清单
一 日常与每周巡检
二 备份策略与自动化
#!/usr/bin/env bash
set -Eeuo pipefail
DUMP=/usr/bin/mongodump
OUT_DIR=/data/mongodb/bak/mongodb_now
TAR_DIR=/data/mongodb/bak/mongodb_list
DATE=$(date +%Y_%m_%d)
DAYS=15
TAR_BAK="mongodb_bak_${DATE}.tar.gz"
mkdir -p "$OUT_DIR/$DATE" "$TAR_DIR"
"$DUMP" -h 127.0.0.1:27017 -o "$OUT_DIR/$DATE"
tar -zcvf "$TAR_DIR/$TAR_BAK" -C "$OUT_DIR" "$DATE"
rm -rf "$OUT_DIR/$DATE"
# 清理旧备份
find "$TAR_DIR" -name "mongodb_bak_*.tar.gz" -mtime +$DAYS -delete
10 2 * * * /usr/local/bin/mongodb_backup.sh >> /var/log/mongodb/backup.log 2>&1
三 日志轮转与系统日志清理
#!/usr/bin/env bash
set -Eeuo pipefail
PID=$(pidof /usr/bin/mongod || true)
LOG_DIR=/var/log/mongodb
DAYS=7
if [[ -n "$PID" ]]; then
kill -SIGUSR1 "$PID"
fi
find "$LOG_DIR" -name "mongod.log.*" -mtime +$DAYS -delete
59 23 * * * /usr/local/bin/mongo_log_rotate.sh >> /var/log/mongodb/rotate.log 2>&1
四 安全与版本更新
# 导入公钥
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
# 添加源(Ubuntu 20.04 Focal 示例)
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" \
| sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
# 升级
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo systemctl restart mongod
mongod --version
五 可用性与容量维护
#!/usr/bin/env bash
if systemctl is-active --quiet mongod; then
echo "MongoDB is running."
else
echo "MongoDB is down. Restarting..."
systemctl restart mongod
# 可扩展:发送告警到企业微信/钉钉/邮件
fi
*/5 * * * * /usr/local/bin/monitor_mongod.sh >> /var/log/mongodb/monitor.log 2>&1