【笔记】ubuntu 20.04 + mongodb 4.4.14定时增量备份脚本

环境

  • ubuntu 20.04
  • mongodb 4.4.14
  • 还没实际使用(20230922)后续到10月底如果有问题会修改

原理

  • 只会在有新增数据时生成新的备份日期目录
  • 备份恢复时,如果恢复的数据库未删除,则会覆盖数据

准备

准备一个文件夹,用于存放脚本

增量备份脚本 mongodb_incremental_backup.sh

bash 复制代码
#!/bin/bash

# MongoDB 主节点连接信息
MONGO_HOST="127.0.0.1"
MONGO_PORT="27017"

# 备份目录的基础路径
BACKUP_BASE_DIR="/home/kudoxi/temp/mongodb_bakup"

# 获取当前日期作为备份子目录名称(格式化为YYYYMMDD)
CURRENT_DATE=$(date +"%Y%m%d")

# 定义全量备份和增量备份目录
FULL_BACKUP_DIR="$BACKUP_BASE_DIR/full"
INCREMENTAL_BACKUP_DIR="$BACKUP_BASE_DIR/incremental_$CURRENT_DATE"

# 执行全量备份(仅第一次执行)
if [ ! -d "$FULL_BACKUP_DIR" ]; then
    mongodump --host $MONGO_HOST --port $MONGO_PORT --out "$FULL_BACKUP_DIR"
else
    # 执行增量备份
    mongodump --host $MONGO_HOST --port $MONGO_PORT --out "$INCREMENTAL_BACKUP_DIR" --oplog
fi

# 检查备份是否成功
if [ $? -eq 0 ]; then
    echo "Backup completed successfully."
else
    echo "Backup failed. Please check the log for details."
fi

恢复备份脚本 mongodb_restore_backup.sh

bash 复制代码
#!/bin/bash

# MongoDB 服务器连接信息
MONGO_HOST="127.0.0.1"
MONGO_PORT="27017"

# 恢复目标数据库名称
TARGET_DB="info_system"

# 恢复目录的基础路径
RESTORE_BASE_DIR="/home/kudoxi/temp/mongodb_bakup"

# 恢复日期,假设您要恢复到某一天的状态 默认最新
RESTORE_DATE=$(date +"%Y%m%d")  # 替换为实际日期

# 全量备份目录
FULL_BACKUP_DIR="$RESTORE_BASE_DIR/full"

# 增量备份目录
INCREMENTAL_BACKUP_DIR="$RESTORE_BASE_DIR/incremental_$RESTORE_DATE"

# 恢复全量备份
mongorestore --host $MONGO_HOST --port $MONGO_PORT --db $TARGET_DB "$FULL_BACKUP_DIR"

# 恢复每日增量备份
for INCREMENTAL_DIR in "$INCREMENTAL_BACKUP_DIR"/*; do
    mongorestore --host $MONGO_HOST --port $MONGO_PORT --db $TARGET_DB "$INCREMENTAL_DIR"
done

# 检查恢复是否成功
if [ $? -eq 0 ]; then
    echo "Database restore completed successfully."
else
    echo "Database restore failed. Please check the log for details."
fi

备份

把脚本目录放到服务器后

  1. 修改实际备份存放路径
bash 复制代码
sudo vim mongo_incremental_backup.sh

保存退出

  1. 给该路径可写入权限
bash 复制代码
sudo chmod +x mongo_incremental_backup.sh
  1. 定时增量
    定时设置参考另一篇mysql增量备份

定时文件配置

bash 复制代码
crontab -e
30 10 * * * /bin/bash /home/kudoxi/temp/mongo_incremental_backup.sh   

恢复

  1. 修改恢复脚本中待恢复数据库名称和备份路径
bash 复制代码
sudo vim mongodb_restore_backup.sh
  1. 执行恢复脚本
bash 复制代码
sudo bash mongodb_restore_backup.sh
相关推荐
草上爬23 分钟前
OpenWrt:使用ALSA实现边录边播
ubuntu·openwrt·record·alsa·play
scdifsn5 小时前
动手学深度学习12.7. 参数服务器-笔记&练习(PyTorch)
pytorch·笔记·深度学习·分布式计算·数据并行·参数服务器
藥瓿亭7 小时前
K8S认证|CKS题库+答案| 6. 创建 Secret
运维·ubuntu·docker·云原生·容器·kubernetes·cks
jackson凌7 小时前
【Java学习笔记】SringBuffer类(重点)
java·笔记·学习
舰长1157 小时前
Ubuntu挂载本地镜像源(像CentOS 一样挂载本地镜像源)
linux·ubuntu·centos
Theodore_10228 小时前
大数据(2) 大数据处理架构Hadoop
大数据·服务器·hadoop·分布式·ubuntu·架构
cookqq8 小时前
mongodb源码分析session异步接受asyncSourceMessage()客户端流变Message对象
数据库·sql·mongodb·nosql
huangyuchi.8 小时前
【Linux】LInux下第一个程序:进度条
linux·运维·服务器·笔记·进度条·c/c++
大写-凌祁9 小时前
论文阅读:HySCDG生成式数据处理流程
论文阅读·人工智能·笔记·python·机器学习
Unpredictable2229 小时前
【VINS-Mono算法深度解析:边缘化策略、初始化与关键技术】
c++·笔记·算法·ubuntu·计算机视觉