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
相关推荐
xxjj998a25 分钟前
Laravel6.x核心特性全解析
数据库·mysql·adb
m0_748554818 小时前
golang如何实现用户订阅偏好管理_golang用户订阅偏好管理实现总结
jvm·数据库·python
早日退休!!!9 小时前
《数据结构选型指南》笔记
数据结构·数据库·oracle
xcLeigh9 小时前
KES数据库性能优化实战
数据库·sql·性能优化·sql优化·数据性能
阿正呀9 小时前
Redis怎样实现本地缓存的高效失效通知
jvm·数据库·python
yoyo_zzm9 小时前
Laravel9.x新特性全解析
数据库·mysql·nginx
2501_901200539 小时前
mysql如何设置InnoDB引擎参数_优化innodb_buffer_pool
jvm·数据库·python
m0_4954964110 小时前
mysql处理复杂SQL性能_InnoDB优化器与MyISAM差异
jvm·数据库·python
forEverPlume11 小时前
PHP怎么使用Eloquent Attribute Composition属性组合_Laravel通过组合构建复杂属性【方法】
jvm·数据库·python
2301_8092047011 小时前
mysql在docker容器中如何部署_利用docker-compose快速启动
jvm·数据库·python