mongodb备份的脚本

一、mongodump 备份脚本

复制代码
#!/bin/bash
# 每日全量备份 MongoDB,保留 7 天

################  可改配置  ################
MONGO_HOST="localhost"
MONGO_PORT="27017"
MONGO_USER=""            # 如未启用 auth 留空
MONGO_PASS=""            #
AUTH_DB="admin"          # 认证库,默认 admin
BACKUP_ROOT="/data/backup/mongo"     #目录
LOG_FILE="/var/log/mongo_backup.log" #是文件不是目录
RETENTION_DAYS=7
#############################################

DATE=$(date +%F)
BACKUP_DIR="$BACKUP_ROOT/$DATE"
ARCHIVE="$BACKUP_DIR.tar.gz"

exec &> >(tee -a "$LOG_FILE")
echo "==========  mongo backup start @ $(date)  =========="

# 建目录
mkdir -p "$BACKUP_DIR"

# 拼装 auth 参数
AUTH_PARAMS=""
if [[ -n "$MONGO_USER" ]]; then
  AUTH_PARAMS="-u $MONGO_USER -p$MONGO_PASS --authenticationDatabase $AUTH_DB"
fi

# 真正 dump
mongodump --host $MONGO_HOST --port $MONGO_PORT $AUTH_PARAMS \
          --out "$BACKUP_DIR" --gzip

if [[ $? -ne 0 ]]; then
  echo "ERROR: mongodump failed!"
  exit 1
fi

# 打包并删除原目录
tar -czf "$ARCHIVE" -C "$BACKUP_ROOT" "$DATE" && rm -rf "$BACKUP_DIR"
echo "archive created: $ARCHIVE"

# 清理旧档
find "$BACKUP_ROOT" -name "*.tar.gz" -mtime +$RETENTION_DAYS -delete
echo "==========  mongo backup finish @ $(date)  =========="

二,还原脚本 【mongorestore】

复制代码
mongorestore \
  --host 127.0.0.1 --port 16017 \
  -u 你的备份账号 -p'你的密码' --authenticationDatabase admin \
  --drop \                 # 先删目标集合再导入,保证完全一致
  /data/backup/mongo/2025-12-23
相关推荐
百结2145 小时前
Mysql数据库操作
数据库·mysql·oracle
keep one's resolveY6 小时前
时区问题解决
数据库
Leinwin6 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
qq_417695056 小时前
机器学习与人工智能
jvm·数据库·python
漫随流水6 小时前
旅游推荐系统(view.py)
前端·数据库·python·旅游
ego.iblacat6 小时前
MySQL 服务基础
数据库·mysql
Maverick068 小时前
Oracle Redo 日志操作手册
数据库·oracle
攒了一袋星辰8 小时前
高并发强一致性顺序号生成系统 -- SequenceGenerator
java·数据库·mysql
W.D.小糊涂8 小时前
gpu服务器安装windows+ubuntu24.04双系统
c语言·开发语言·数据库
云贝教育-郑老师8 小时前
【OceanBase 的多租户架构是怎样的?有什么优势?】
数据库·oceanbase