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


    环境

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

    原理

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

    准备

    准备一个文件夹,用于存放脚本
    在这里插入图片描述

    增量备份脚本 mongodb_incremental_backup.sh

    #!/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
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31

    恢复备份脚本 mongodb_restore_backup.sh

    #!/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
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    备份

    把脚本目录放到服务器

    1. 修改实际备份存放路径
    sudo vim mongo_incremental_backup.sh
    
    • 1

    保存退出
    2. 给该路径可写入权限

    sudo chmod +x mongo_incremental_backup.sh
    
    • 1
    1. 定时增量
      定时设置参考另一篇mysql增量备份

    定时文件配置

    crontab -e
    30 10 * * * /bin/bash /home/kudoxi/temp/mongo_incremental_backup.sh   
    
    • 1
    • 2

    恢复

    1. 修改恢复脚本中待恢复数据库名称和备份路径
    sudo vim mongodb_restore_backup.sh
    
    • 1

    在这里插入图片描述

    1. 执行恢复脚本
    sudo bash mongodb_restore_backup.sh
    
    • 1
  • 相关阅读:
    【JPC出版】第二届能源与电力系统国际学术会议 (ICEEPS 2023)
    Linux详解
    idea在controller或者service使用ctrl+alt+b进入方法后,如何返回到 进入前的那一层
    【Nuxt】01 什么是SSR 服务端渲染
    Pandas常用操作命令(四)——数据切片、筛选
    k个相等的子集
    小程序长文本限制显示行数
    动态代理(java模拟生活中的代理)
    Python之猜数字游戏
    论文浅尝 | 用于开放式文本生成的事实增强语言模型
  • 原文地址:https://blog.csdn.net/qq_35567179/article/details/133159275