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
相关推荐
这个DBA有点耶39 分钟前
AI写的SQL跑崩了生产库,这锅谁背?
数据库·人工智能·程序员
镜舟科技1 小时前
Databricks 再提 LTAP,AI 时代的数据底座为何重回大一统叙事?
数据库·架构·agent
Databend2 小时前
从湖仓升级为 Agent 时代的数据控制面,Snowflake 和 Databricks 有哪些布局
大数据·数据库·agent
ClouGence5 小时前
SQL Server CDC 能放到 Always On 备库读吗?一文讲透原理与实践
数据库·sql server
葫芦和十三8 小时前
图解 MongoDB 25|分片架构三件套:mongos、config server 和 shard
后端·mongodb·agent
葫芦和十三15 小时前
图解 MongoDB 26|片键设计:决定集群命运的一个决定
后端·mongodb·agent
先吃饱再说1 天前
存储的进化:从 MySQL 到浏览器缓存,数据到底住在哪?
数据库
Nturmoils1 天前
字段太多看不全,ksql 的展开模式和输出控制怎么用
数据库·后端
Databend1 天前
Agent 轨迹分析与归因的数据工程实践
大数据·数据库·agent
这个DBA有点耶1 天前
SQL改写进阶:标量子查询的“隐形代价”与消除实战
数据库·mysql·架构