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有点耶33 分钟前
实时数据集成工具选型2026:从CDC到数据同步的完整指南
数据库·数据挖掘·dba
__zRainy__37 分钟前
Node系列 · ORM:Sequelize 简介
数据库·后端·node.js
鸽芷咕41 分钟前
达梦VS金仓选型实录:别只比TPC-C,迁移工具链才是项目成败的关键
数据库
King of fraud1 小时前
Linux 下 MySQL 基础操作:创建用户、数据库与权限管理实战
linux·数据库·mysql
努力的小雨2 小时前
sys_basebackup 适合什么场景,先看恢复目标
数据库
这个DBA有点耶2 小时前
Redis大key“根治”指南:拆分策略与数据结构选型
数据库·mysql·架构
程序员与背包客_CoderZ2 小时前
高性能分布式KV存储引擎RocksDB入门与C/C++编码实战
c语言·开发语言·数据库·c++·分布式·分布式数据库·rocksdb
进击的_鹏2 小时前
从零开始的 Redis 学习
服务器·数据库·c++·redis·缓存
隔窗听雨眠2 小时前
当KES遇到多租户:金仓数据库多租户架构的隔离实践与部署指南
数据库·架构
JOker_Chu_3 小时前
知识图谱详解:从图结构、关系建模到查询与应用
数据库·知识图谱·database·neo4j