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

2023-09-22 10:32:05

环境

  • 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

恢复备份脚本 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. 修改实际备份存放路径
sudo vim mongo_incremental_backup.sh

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

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

定时文件配置

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

恢复

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

在这里插入图片描述

  1. 执行恢复脚本
sudo bash mongodb_restore_backup.sh
更多推荐

一遍关于vue基础语法上篇

目录一.插值1.1.文本1.2.html1.2.3.属性1.1.4.表达式演示效果:二.指令2.1.v-if/v-else-if/v-else2.2.v-show2.3.v-for2.4.v-bindv-onv-model2.5.动态参数演示效果:三.过滤器3.1.局部过滤器基本应用3.2.局部过滤器串行使用3.3.局

千呼万唤openGauss资源池化系列培训来了

应openGauss广大用户要求,社区于近期推出openGauss资源池化培训系列。关于资源池化资源池化是openGauss5.0.0推出的重点特性,是openGauss基于内存池化和共享存储实现的数据库集群。数据在集群的计算节点内存、共享存储中实现共享。应用可以任意节点接入,集群可以保证提供实时一致性的数据。集群也保

Linux设备驱动之IIC驱动

Linux设备驱动之I2C驱动I2C是一种半双工串行通信总线,使用多主从架构,总线上会挂载设备,设备通信就会涉及协议,下面一起看看I2C通信协议是怎样的,在Linux系统上软件又是如何驱动的。I2C通信协议硬件连接I2C串行总线一般有两根信号线,一根是双向数据线SDA,另一根是时钟线SCL,数据线即用来表示数据,时钟线

华为以太网接口配置命令

【微|信|公|众|号:厦门微思网络】今天给大家带来的命令列表如下:amisolateautoduplexautospeedclock(以太接口视图)combo-portdisplayerror-downrecoverydisplayinterfaceethernetbriefdisplayport-groupdispl

网络工程师的爬虫技术之路:跨界电商与游戏领域的探索

随着数字化时代的到来,跨界电商和游戏行业成为了网络工程师们充满机遇的领域。这两个领域都依赖于高度复杂的技术来实现商业目标和提供卓越的用户体验。本文将深入探讨网络工程师在跨界电商和游戏领域的技术挑战以及应对这些挑战的方法。突破技术障碍的爬虫应用跨界电商业务通常需要大量的市场数据和竞争情报,而这些信息可能分散在全球各个网站

batch norm 中 track_running_stats 的探索

ifself.track_running_stats:self.register_buffer('running_mean',torch.zeros(num_features,**factory_kwargs))self.register_buffer('running_var',torch.ones(num_feat

Linux(CentOS)安装msf

目录一、安装MSF1.1在线安装1.2离线安装二、安装Postgresql数据库一、安装MSF1.1在线安装需要挂梯子!挂完梯子需要reboot重启,多试几次就可以,国内网络我试了很久都不行。没条件没梯子的看1.2离线安装cd/optcurlhttps://raw.githubusercontent.com/rapid

【Docker】了解和使用Docker

文章底部有投票活动,赶快参与进来吧😃相信大家在开发过程中都听说过Docker一词,至于Docker在开发中扮演的角色,估计好多人都说不上来,今天就让阿Q带大家一起揭开它神秘的面纱!文章目录什么是容器?容器的优点什么是Docker?Docker思想为什么要用Docker?容器VS虚拟机Docker中的基本概念镜像(Im

Reinforcement Learning(二)--on-policy和off-policy

1.前言强化学习(Reinforcementlearning,RL)是机器学习的一个分析,特点是概念多、公式多、入门门槛高🥲(别问我怎么知道的)。本篇文章着重讲解RL最重要的概念之一,即on-policy和off-policy,这2个概念极易与online和offline混淆,为体现文章的独立性,online和off

openGauss Meetup(杭州站)全程精彩回顾

9月16日,由云和恩墨、图尔兹、浙江鲲鹏、openGauss社区联合主办的“openGaussMeetup(杭州站)”活动在杭州市拱墅区中国智慧信息产业园成功举办,此次活动邀请到众多业内技术专家,与行业同仁一起探讨数据库技术创新与未来发展,助力企业数字化转型发展。出席此次活动的领导和嘉宾有图尔兹创始人&总经理陈邦义、o

16个图像分类方向开源数据集资源汇总(附下载链接)

FruitNet水果分类/识别数据集下载链接:http://suo.nz/2Cfo4y需要高质量的水果图像来解决水果分类和识别问题。要构建机器学习模型,整洁干净的数据集是基本要求。为了这个目标,我们创建了名为“FruitNet”的六种流行印度水果的数据集。该数据集包含6种不同类别水果的14700多张经过处理的格式的高质

热文推荐