当前位置: 首页 > news >正文

【笔记】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" ]; thenmongodump --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 ]; thenecho "Backup completed successfully."
elseecho "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"/*; domongorestore --host $MONGO_HOST --port $MONGO_PORT --db $TARGET_DB "$INCREMENTAL_DIR"
done# 检查恢复是否成功
if [ $? -eq 0 ]; thenecho "Database restore completed successfully."
elseecho "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

相关文章:

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

环境 ubuntu 20.04mongodb 4.4.14还没实际使用(20230922)后续到10月底如果有问题会修改 原理 只会在有新增数据时生成新的备份日期目录备份恢复时,如果恢复的数据库未删除,则会覆盖数据 准备 准备一个文件夹,用于…...

c++实现的一个定时器实例

/* * author: hjjdebug * date : 2023年 09月 23日 星期六 11:52:29 CST * description: 用std::thread 实现了一个定时器,深刻理解一下定时器是怎样工作的. * 参考Timer.h, Timer.cpp */ $ cat main.cpp #include "Timer.h" #include <unis…...

Python线程和进程

1、深度解析Python线程和进程 一篇文章带你深度解析Python线程和进程 - 知乎使用Python中的线程模块&#xff0c;能够同时运行程序的不同部分&#xff0c;并简化设计。如果你已经入门Python&#xff0c;并且想用线程来提升程序运行速度的话&#xff0c;希望这篇教程会对你有所帮…...

算法 寻找峰值-(二分查找+反向双指针)

牛客网: BM19 题目: 寻找数组峰值&#xff0c;可能多个返回任一个&#xff0c;每个值满足nums[i] ! nums[i 1] 思路: 双指针 left 0, right n-1, 相向而行&#xff0c;取中间位置mid, nums[mid]与nums[mid1]比较&#xff0c;如果nums[mid] < nums[mid1]&#xff0c;说明…...

【数据结构】—交换排序之快速排序究极详解,手把手带你从简单的冒泡排序升级到排序的难点{快速排序}(含C语言实现)

食用指南&#xff1a;本文在有C基础的情况下食用更佳 &#x1f525;这就不得不推荐此专栏了&#xff1a;C语言 ♈️今日夜电波&#xff1a;靴の花火—ヨルシカ 0:28━━━━━━️&#x1f49f;──────── 5:03 …...

【c#-Nuget 包“在此源中不可用”】 Nuget package “Not available in this source“

标题c#-Nuget 包“在此源中不可用”…但 VS 仍然知道它吗&#xff1f; (c# - Nuget package “Not available in this source”… but VS still knows about it?) 背景&#xff1a; 今日从公司svn 上拉取很久很久以前的代码&#xff0c;拉取下来200报错&#xff0c;进一步发…...

【数据结构】二叉树之堆的实现

&#x1f525;博客主页&#xff1a;小王又困了 &#x1f4da;系列专栏&#xff1a;数据结构 &#x1f31f;人之为学&#xff0c;不日近则日退 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 目录 一、二叉树的顺序结构 &#x1f4d2;1.1顺序存储 &#x1f4d2;1.2堆的性质…...

电工-三极管输入输出特性曲线讲解

三极管特性曲线是反映三极管各电极电压和电流之间相互关系的曲线&#xff0c;是用来描述晶体三极管工作特性曲线&#xff0c;常用的特性曲线有输入特性曲线和输出特性曲线。这里以下图所示的共发射极电路来分析三极管的特性曲线。 输入特性曲线 该曲线表示当e极与c极之间的电…...

深入解析容器与虚拟化:技术、对比与生态

深入解析容器与虚拟化&#xff1a;技术、对比与生态 文章目录 深入解析容器与虚拟化&#xff1a;技术、对比与生态容器和虚拟化的基本概念和原理容器的定义和特点虚拟化的定义和特点 容器使用场景容器和虚拟机的对比虚拟化技术的四个特点容器实现虚拟化的原理常见容器引擎和容器…...

制作游戏demo的心得

制作这个游戏demo出来的心得 https://www.bilibili.com/video/BV1cF411m7Dh/ 制作游戏demo的心得 制作游戏demo&#xff0c;主要是为了表现自己的技术&#xff0c;那就一门心思想着如何提高表现力就行了&#xff0c;在整体的画面渲染风格方面或许没有什么可选择的&#xff0c;…...

Web Tour Server窗口闪现

1.打开该文件所在位置 2.右击选择编辑&#xff0c;在最后一行加上pause&#xff0c;保存后重新打开Server窗口 3.重新打开后&#xff0c;若出现以下情况&#xff1a; 以管理员身份打开cmd命令行&#xff0c;输入命令netstat -aon|findstr “1080”&#xff0c;查看1080端口占用…...

Linux下的基本指令

目录 01. ls 指令 02. pwd命令 03. cd 指令 04. touch指令 05.mkdir指令&#xff08;重要&#xff09;&#xff1a; 06.rmdir指令 && rm 指令&#xff08;重要&#xff09;&#xff1a; 07.man指令&#xff08;重要&#xff09;&#xff1a; 08mv指令&#xff…...

随机数生成器代码HTML5

代码如下 <!DOCTYPE html> <html> <head> <title>随机数生成器</title> <meta name"viewport" content"widthdevice-width, initial-scale1.0"> <style> body { text-align: center; bac…...

正确理解redux Toolkits中createSlice的action.payload

使用redux Toolkits中的createSlice编写extraReducers经常看到使用action.payload来更新state状态值&#xff1a; 那么action.payload指的到底是什么&#xff1f; 让我们看看action的定义部分&#xff1a; 注意&#xff1a; action.payload不是上面ajax请求的返回内容&#x…...

YOLOv8快速复现 官网版本 ultralytics

YOLOV8环境安装教程.&#xff1a;https://www.bilibili.com/video/BV1dG4y1c7dH/ YOLOV8保姆级教学视频:https://www.bilibili.com/video/BV1qd4y1L7aX/ b站视频&#xff1a;https://www.bilibili.com/video/BV12p4y1c7UY/ 1 平台搭建YOLOv8 平台&#xff1a;https://www.a…...

Haproxy搭建 Web 群集实现负载均衡

目录 1 Haproxy 1.1 HAProxy的主要特性 1.2 HAProxy负载均衡策略 1.3 LVS、Nginx、HAproxy的区别 2 Haproxy搭建 Web 群集 2.1 haproxy 服务器部署 2.1.1 关闭防火墙 2.1.2 内核配置&#xff08;实验环境可有可无&#xff09; ​2.1.3 安装 Haproxy 2.1.4 Haproxy服务…...

Tessy 5.0.4

Tessy 5.0.4 Linux 2692407267qq.com&#xff0c;更多内容请见http://user.qzone.qq.com/2692407267/...

mybatis-plus根据指定条件批量更新

1.service实现类中 比如我这里只针对UserEntity&#xff0c;在UserServiceImpl下&#xff08;该实现类是继承了mybatis-plus的ServiceImpl的&#xff09;新增如下代码&#xff1a; public boolean updateBatchByQueryWrapper(Collection<UserEntity> entityList, Funct…...

虹科方案 | LIN/CAN总线汽车零部件测试方案

文章目录 摘要一、汽车零部件测试的重要性&#xff1f;二、虹科的测试仿真工具如何在汽车零部件测试展露头角&#xff1f;三、应用场景**应用场景1&#xff1a;方向盘开关的功能测试****应用场景2&#xff1a;各类型电机的控制测试****应用场景3&#xff1a;RGB氛围灯的功能测试…...

[solidity]合约调用合约

先写一个简单的合约将其部署&#xff0c;部署后的合约地址为&#xff1a;0xd9145CCE52D386f254917e481eB44e9943F39138 // SPDX-License-Identifier: MIT pragma solidity ^0.8.0;contract A{string myname;function setName(string memory _name) public{myname_name;}functi…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

手游刚开服就被攻击怎么办?如何防御DDoS?

开服初期是手游最脆弱的阶段&#xff0c;极易成为DDoS攻击的目标。一旦遭遇攻击&#xff0c;可能导致服务器瘫痪、玩家流失&#xff0c;甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案&#xff0c;帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...

可靠性+灵活性:电力载波技术在楼宇自控中的核心价值

可靠性灵活性&#xff1a;电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中&#xff0c;电力载波技术&#xff08;PLC&#xff09;凭借其独特的优势&#xff0c;正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据&#xff0c;无需额外布…...

Android Bitmap治理全解析:从加载优化到泄漏防控的全生命周期管理

引言 Bitmap&#xff08;位图&#xff09;是Android应用内存占用的“头号杀手”。一张1080P&#xff08;1920x1080&#xff09;的图片以ARGB_8888格式加载时&#xff0c;内存占用高达8MB&#xff08;192010804字节&#xff09;。据统计&#xff0c;超过60%的应用OOM崩溃与Bitm…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈

在日常iOS开发过程中&#xff0c;性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期&#xff0c;开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发&#xff0c;但背后往往隐藏着系统资源调度不当…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程&#xff1f; 2. Java创建对象的过程&#xff1f; 3. 对象的生命周期&#xff1f; 4. 类加载器有哪些&#xff1f; 5. 双亲委派模型的作用&#xff08;好处&#xff09;&#xff1f; 6. 讲一下类的加载和双亲委派原则&#xff1f; 7. 双亲委派模…...

人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent

安全大模型训练计划&#xff1a;基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标&#xff1a;为安全大模型创建高质量、去偏、符合伦理的训练数据集&#xff0c;涵盖安全相关任务&#xff08;如有害内容检测、隐私保护、道德推理等&#xff09;。 1.1 数据收集 描…...

【前端异常】JavaScript错误处理:分析 Uncaught (in promise) error

在前端开发中&#xff0c;JavaScript 异常是不可避免的。随着现代前端应用越来越多地使用异步操作&#xff08;如 Promise、async/await 等&#xff09;&#xff0c;开发者常常会遇到 Uncaught (in promise) error 错误。这个错误是由于未正确处理 Promise 的拒绝&#xff08;r…...

Python网页自动化Selenium中文文档

1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API&#xff0c;让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API&#xff0c;你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...