首页主机资讯Ubuntu中如何对MongoDB进行定期维护

Ubuntu中如何对MongoDB进行定期维护

时间2026-01-20 02:04:04发布访客分类主机资讯浏览402
导读:Ubuntu 下 MongoDB 定期维护清单 一 日常与每周巡检 服务与连通性 检查服务状态:sudo systemctl status mongod 查看实时日志:journalctl -u mongod -f 简单连通与健康:mo...

Ubuntu 下 MongoDB 定期维护清单

一 日常与每周巡检

  • 服务与连通性
    • 检查服务状态:sudo systemctl status mongod
    • 查看实时日志:journalctl -u mongod -f
    • 简单连通与健康:mongostat --port 27017 -u admin -p ‘password’ --authenticationDatabase admin(关注 insert/qr/qw 等队列与吞吐)
  • 慢查询与索引
    • 开启/调整慢查询:db.setProfilingLevel(1, { slowms: 100 } )
    • 查看慢查询:db.system.profile.find({ millis: { $gt: 100 } } ).sort({ ts: -1 } ).limit(5)
  • 配置与容量基线
    • 核对关键配置:storage.dbPathstorage.enginesystemLog.pathnet.bindIpsecurity.authorization
    • 结合监控观察 WiredTiger 缓存命中、页面错误、连接数、磁盘与 IOPS 使用率,形成周报基线。

二 备份策略与自动化

  • 备份方式选型
    • 逻辑备份:mongodump(灵活、适合中小规模与跨版本迁移)
    • 物理/快照:LVM/云盘快照(大库快速一致性备份)
    • 企业级:第三方工具(如 Percona Backup for MongoDB、Atlas Backup)
  • 全量备份脚本示例(按日轮转,保留 N 天)
    • 建议将脚本与备份目录归属 mongodb:mongodb,并在 root 的 crontab 中定时执行
    • 示例(保留最近 15 天,路径可按需调整):
      #!/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
      
    • 定时任务(root):每天 02:10 执行
      10 2 * * * /usr/local/bin/mongodb_backup.sh >
          >
           /var/log/mongodb/backup.log 2>
          &
          1
      
  • 恢复命令
    • 全量恢复:mongorestore /path/to/backup
    • 指定库/集合:mongorestore --db mydb /path/to/backup/mydb
  • 建议
    • 关键业务采用“每日全量 + 持续归档 oplog”以实现时间点恢复(需副本集/分片集群)
    • 定期将备份文件拷贝到异地/对象存储,并进行恢复演练验证可用性。

三 日志轮转与系统日志清理

  • MongoDB 日志轮转(推荐)
    • 利用 SIGUSR1 触发日志轮转,配合 find 清理 N 天前旧日志
    • 示例脚本(每天 23:59 轮转并保留 7 天):
      #!/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
      
    • 定时任务(root):
      59 23 * * * /usr/local/bin/mongo_log_rotate.sh >
          >
           /var/log/mongodb/rotate.log 2>
          &
          1
      
  • systemd 日志轮转(可选)
    • 限制 MongoDB 单元日志体积:sudo journalctl --vacuum-size=100M
    • 配合 /etc/systemd/journald.confSystemMaxUse/MaxRetentionSec 做全局策略。

四 安全与版本更新

  • 安全加固
    • 启用认证:security.authorization: enabled,为管理/应用创建最小权限角色
    • 网络最小化:net.bindIp 绑定内网地址,限制公网暴露
    • 定期审计用户、角色与白名单;备份文件加密存储与传输
  • 补丁与版本升级
    • 流程要点:备份 → 验证备份 → 升级包 → 重启验证
    • Ubuntu APT 升级示例(以 6.0 仓库为例,其他版本替换版本号):
      # 导入公钥
      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
      
    • 定时任务(root):每 5 分钟检查一次
      */5 * * * * /usr/local/bin/monitor_mongod.sh >
          >
           /var/log/mongodb/monitor.log 2>
          &
          1
      
  • 容量与性能
    • 结合 mongostat 观察队列与扫描,按需创建/优化索引、调整 WiredTiger cacheSizeGB
    • 规划磁盘扩容与数据归档策略,避免单盘/单表膨胀导致性能劣化。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu中如何对MongoDB进行定期维护
本文地址: https://pptw.com/jishu/786514.html
Linux vsftp被动模式:如何配置以提高连接成功率 Ubuntu中如何监控MongoDB运行状态

游客 回复需填写必要信息