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
相关推荐
科技小花4 小时前
数据治理平台架构演进观察:AI原生设计如何重构企业数据管理范式
数据库·重构·架构·数据治理·ai-native·ai原生
一江寒逸4 小时前
零基础从入门到精通MySQL(中篇):进阶篇——吃透多表查询、事务核心与高级特性,搞定复杂业务SQL
数据库·sql·mysql
D4c-lovetrain4 小时前
linux个人心得22 (mysql)
数据库·mysql
阿里小阿希4 小时前
CentOS7 PostgreSQL 9.2 升级到 15 完整教程
数据库·postgresql
荒川之神4 小时前
Oracle 数据仓库雪花模型设计(完整实战方案)
数据库·数据仓库·oracle
做个文艺程序员4 小时前
MySQL安全加固十大硬核操作
数据库·mysql·安全
不吃香菜学java5 小时前
Redis简单应用
数据库·spring boot·tomcat·maven
一个天蝎座 白勺 程序猿5 小时前
Apache IoTDB(15):IoTDB查询写回(INTO子句)深度解析——从语法到实战的ETL全链路指南
数据库·apache·etl·iotdb
不知名的老吴5 小时前
Redis的延迟瓶颈:TCP栈开销无法避免
数据库·redis·缓存
YOU OU5 小时前
三大范式和E-R图
数据库