MySQL、MariaDB、OceanBase远程异地定时备份脚本
问题背景
公司需要在异地机房远程备份数据库,以防止数据丢失,同时要支持MySQL、MariaDB和OceanBase。由于MariaDB和OceanBase支持MySQL语法,所以可以直接用MySQL Client进行备份。
安装MySQL客户端
yum install mysql
编写脚本
编写/backup/backup.sh,它的作用是执行备份到sql文件,并自动压缩成tar.gz压缩包,再删除30天前的压缩包
#!/bin/bash# 检查参数个数
if [ "$#" -lt 3 ]; thenecho "Usage: $0 <remote_user>@<server>:<port> -p <password> -d <database_name>"exit 1
fi# 解析参数
REMOTE_INFO="$1"
REMOTE_DB_PASSWORD=""
REMOTE_DB_NAME=""# 从第一个参数中提取用户名、主机和端口
IFS='@' read -ra ADDR <<< "$REMOTE_INFO"
IFS=':' read -ra USR <<< "${ADDR[1]}"
REMOTE_DB_USER=${ADDR[0]}
REMOTE_DB_HOST=${USR[0]}
REMOTE_DB_PORT=${USR[1]}# 从第二个参数中提取密码
for arg in "$@"; docase $arg in-p) shift; REMOTE_DB_PASSWORD="$1";;-d) shift; REMOTE_DB_NAME="$1";;*) shift;;esac
done
echo ----------------开始备份---------------------
echo REMOTE_DB_USER=$REMOTE_DB_USER
echo REMOTE_DB_HOST=$REMOTE_DB_HOST
echo REMOTE_DB_PORT=$REMOTE_DB_PORT
echo REMOTE_DB_PASSWORD=$REMOTE_DB_PASSWORD
echo REMOTE_DB_NAME=$REMOTE_DB_NAMEBACKUP_PATH="/backup/${REMOTE_DB_HOST}_${REMOTE_DB_PORT}_${REMOTE_DB_NAME}"
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_FILE="$BACKUP_PATH/$REMOTE_DB_NAME-$DATE.sql"
TAR_FILE="$BACKUP_FILE.tar.gz"
DAYS_TO_KEEP=30# 创建备份目录,如果不存在的话
mkdir -p $BACKUP_PATH# 远程备份命令,包含端口号
mysqldump -h $REMOTE_DB_HOST -u $REMOTE_DB_USER -p$REMOTE_DB_PASSWORD -P $REMOTE_DB_PORT $REMOTE_DB_NAME > $BACKUP_FILE# 检查备份是否成功
if [ $? -eq 0 ]; thenecho "备份成功: $BACKUP_FILE"# 压缩备份文件cd $BACKUP_PATHtar czf $TAR_FILE $REMOTE_DB_NAME-$DATE.sqlif [ $? -eq 0 ]; thenecho "压缩成功: $TAR_FILE"elseecho "压缩失败"fi# 删除原.sql文件rm -f $BACKUP_FILEif [ $? -eq 0 ]; thenecho "删除备份文件: $BACKUP_FILE"elseecho "删除备份文件失败: $BACKUP_FILE"fi# 删除旧备份文件find $BACKUP_PATH -type f -name "*.tar.gz" -mtime +$DAYS_TO_KEEP -exec rm -f {} \;if [ $? -eq 0 ]; thenecho "已自动清理 $DAYS_TO_KEEP 天前的压缩包"elseecho "清理压缩包失败"fi
elseecho "备份失败"
fi
设置定时任务
crontab -e
和vi的使用方法一样,在里面写上如下的信息即可,假设在192.168.1.10这台服务器上有个MySQL开了3306端口,并且用户名为root,密码为MyPass@w0rd,数据库为test_db,每天晚上0点准时备份,则定时任务这么写:
0 0 * * * /backup/backup.sh root@192.168.1.10:3306 -p MyPass@w0rd -d test_db >> /backup/system.log
如果要备份多个库直接写多行即可:
0 0 * * * /backup/backup.sh root@192.168.1.10:3306 -p MyPass@w0rd -d test_db >> /backup/system.log
5 0 * * * /backup/backup.sh root@192.168.1.11:3306 -p !@3QWEasd -d test_db2 >> /backup/system.log
这样系统就会在0点备份test_db库,在0点5分备份test_db2库,最后备份出来的压缩包会放在\backup\192.168.1.10_3306_test_db\和\backup\192.168.1.11_3306_test_db2\下面
已知的其他问题
mysqldump不支持复杂的视图和函数备份,一般这俩也不会经常动,所以建议单独备份一下。
相关文章:
MySQL、MariaDB、OceanBase远程异地定时备份脚本
问题背景 公司需要在异地机房远程备份数据库,以防止数据丢失,同时要支持MySQL、MariaDB和OceanBase。由于MariaDB和OceanBase支持MySQL语法,所以可以直接用MySQL Client进行备份。 安装MySQL客户端 yum install mysql编写脚本 编写/backu…...
【远程监控新体验】OpenObserve结合内网穿透无公网IP远程访问全攻略
文章目录 前言1. 安装Docker2. Docker镜像源添加方法3. 创建并启动OpenObserve容器4. 本地访问测试5. 公网访问本地部署的OpenObserve5.1 内网穿透工具安装5.2 创建公网地址6. 配置固定公网地址前言 本文主要介绍如何在Linux系统使用Docker快速本地化部署OpenObserve云原生可观…...
深度学习:异常检测(Anomaly Detection)详解
异常检测(Anomaly Detection)详解 异常检测,也称为离群点检测,是一种用于识别在数据中显著偏离正常行为或预期模式的数据点的技术。这些异常数据点可能代表系统错误、欺诈行为、网络入侵或任何其他重要且通常需要进一步调查的现象…...
智慧公厕系统提升公共服务满意度
在现代城市化进程中,公共服务体系的完善与提升成为了政府和社会各界的重要任务。作为公共厕所这样一个普遍而基础的市政设施,其服务质量直接影响到市民的生活品质和城市形象。近年来,智慧公厕系统的引入逐渐成为提升公共服务满意度的重要手段…...
幼儿和青少年编程学习路径
1. 引言 编程在现代教育中的重要性 随着信息时代的来临,编程不再是一个小众技能,而是成为未来社会各行业的重要基础能力。从计算机科学到人工智能,再到数据科学和软件工程,编程技能无疑是未来全球经济的核心驱动力之一。越来越多…...
leetcode48:旋转矩阵
题目: 给定一个 n n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转 90 度。 你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。 示例 1: 输入:matrix [[1,2,3],[4,5…...
安装CentOS 8镜像和创建CentOS 8虚拟机教程
一、安装虚拟机 网上查找教程,我用的是VMware 17 二、下载CentOS 8镜像 1.阿里云下载CentOS 8镜像 centos安装包下载_开源镜像站-阿里云 (aliyun.com) 选择需要下载的版本,(建议)下载dvd1版本的iso(也有下载boot版本的iso,创…...
针对考研的C语言学习(二叉树专题)
二叉树层次建树 对于二叉树,建树过程中需要一个(尾插法的)链表(或队列)来辅助确认当前父亲节点 由于尾插法需要一个尾指针。因此可以理解为队列,只不过是不带头结点的链表版队列。 但其实就是一个辅助找…...
【ARM 嵌入式 编译系列 10.9 -- Clang 编译器】
> ARM GCC 编译精讲系列课程链接 < 文章目录 Clang 编译器详细介绍Clang 主要特点Clang 许可协议Clang 与 GCC 主要差异Clang 使用示例Summary Clang 编译器详细介绍 Clang 是一个由 LLVM 项目开发的编译器前端,支持 C、C、Objective-C 和 Objective-C 等编程…...
《深度学习》【项目】自然语言处理——情感分析 <上>
目录 一、项目介绍 1、项目任务 2、评论信息内容 3、待思考问题 1)目标 2)输入字词格式 3)每一次传入的词/字的个数是否就是评论的长度 4)一条评论如果超过32个词/字怎么处理? 5)一条评论如果…...
RU19.25 Standalone (GI和DB分开打)
参考文档:Patch 36916690 - GI Release Update 19.25.0.0.241015 2.1.1.1 OPatch Utility Information 12.2.0.1.42 or later 2.1.1.2 Validation of Oracle Inventory 分别在GI和Oracle Home下执行 $ <ORACLE_HOME>/OPatch/opatch lsinventory -detail -o…...
探索 Jupyter 核心:nbformat 库的神秘力量
文章目录 探索 Jupyter 核心:nbformat 库的神秘力量1. 背景介绍:为何选择 nbformat?2. nbformat 是什么?3. 如何安装 nbformat?4. 简单的库函数使用方法4.1 读取 Notebook 文件4.2 修改 Notebook 中的单元格4.3 添加 M…...
python+大数据+基于spark的短视频推荐系统【内含源码+文档+部署教程】
博主介绍:✌全网粉丝10W,前互联网大厂软件研发、集结硕博英豪成立工作室。专注于计算机相关专业毕业设计项目实战6年之久,选择我们就是选择放心、选择安心毕业✌ 🍅由于篇幅限制,想要获取完整文章或者源码,或者代做&am…...
Elasticsearch字段数据类型
1. 前言 ES文档的每个字段都至少有一个数据类型,此类型决定了字段值如何被存储以及检索。例如,字符串类型可以定义为text或者keyword,前者用于全文检索,会经过分词后索引;后者用于精准匹配,值会保持原样被…...
简述RESTFul风格的API接口
目录 传统的风格API REST风格 谓词规范 URL命令规范 避免多级URL 幂等 CURD的接口设计 REST响应 响应成功返回的状态码 重定向 错误代码 客户端 服务器 RESTful的返回格式 返回格式 从上一篇文章我们已经初步知道了怎么在VS中创建一个webapi项目。这篇文章来探讨一…...
探索光耦:光耦——不间断电源(UPS)系统中的安全高效卫士
在现代社会,不间断电源(UPS)系统已成为保障关键设备和数据安全的关键设施,广泛应用于企业数据中心、家庭电子设备等场景。UPS能在电力中断或波动时提供稳定电力,确保设备持续运行。而在这套系统中,光耦&…...
at命令和cron命令
第一章 例行性工作 1、单一执行的例行性工作 单一执行的例行性工作:仅处理执行一次就结束了 . 1.1 at命令的工作过程 /etc/at.allow:里面的用户是可以使用at命令的 --- 但实际上这个allow文件不存在,所以指全部的人都可以使用该命令&#…...
搜维尔科技:使用Manus Primel Xsens数据手套直接在Xsens及其插件中捕获手指数据
使用Manus Primel Xsens数据手套直接在Xsens及其插件中捕获手指数据 搜维尔科技:使用Manus Primel Xsens数据手套直接在Xsens及其插件中捕获手指数据...
Avalonia UI获取Popup显示位置,可解决异常显示其他应用程序的左上角
1.通过 PlacementTarget 获取位置 如果 Popup 是相对于某个控件(PlacementTarget)显示的,你也可以获取该控件的位置,然后计算 Popup 的相对位置。 // 假设 popup 是你的 Popup,target 是你的目标控件(Pla…...
新版Win32高级编程教程-学习笔记01:应用程序分类
互联网行业 算法研发工程师 目录 新版Win32高级编程教程-学习笔记01:应用程序分类 控制台程序 强烈注意 窗口程序 启动项 程序入口函数 库程序 静态库 动态库程序 几种应用程序的区别 控制台程序 本身没有窗口,其中的doc窗口,是管…...
无机布防火卷帘门价格怎么算?按尺寸定制,按需报价
无机布防火卷帘门作为建筑防火分区的核心设备,价格一直是工程采购的关注重点。很多用户在询价时,会发现不同厂家的报价差异较大,这是因为无机布防火卷帘门的价格并非按统一单价计算,而是完全根据项目的实际需求定制化核算。 &…...
Unity-MCP协议:可嵌入、可协商的AI上下文通信标准
1. 这不是又一个“AI插件”,而是Unity开发工作流的底层重定义你有没有过这样的时刻:在Unity里反复调整Animator Controller的过渡条件,只为让角色转身动画不穿模;写完一段NavMesh寻路逻辑,却要花两小时调试Agent卡在斜…...
第三幕 御酒掺土,江山为祭
金牌监制,您这一刀改得极其精准,直接把整部戏的格局从“江湖恩怨”拉升到了“家国博弈”的层面!确实,如果只谈慈悲,唐三藏只是个高僧;但如果加上李世民的重托和大唐的国运,他就是一个背负着沉重…...
别再手动改路径了!用LabVIEW + MATLAB Script做自动化测试,这份环境配置指南让你效率翻倍
LabVIEW与MATLAB深度整合:构建自动化测试系统的工程实践指南在工业自动化与测试测量领域,LabVIEW和MATLAB的组合堪称黄金搭档。LabVIEW擅长硬件接口和实时控制,而MATLAB在算法开发和数据分析方面具有无可比拟的优势。本文将深入探讨如何将两者…...
从电磁炉到户外电源:拆解单相SVPWM如何让你的逆变器更安静、更高效
从电磁炉到户外电源:单相SVPWM如何实现静音与高效的双重突破当你深夜用电磁炉煮面时,是否曾被突然的蜂鸣声吓一跳?或是发现户外电源给设备充电时,散热风扇的噪音盖过了山林鸟鸣?这些常见问题背后,隐藏着一个…...
为内部知识库问答机器人接入Taotoken多模型增强回答效果
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 为内部知识库问答机器人接入Taotoken多模型增强回答效果 构建一个高效的企业内部知识库问答机器人,核心挑战在于如何让…...
碧蓝航线自动化脚本终极指南:3小时学会全自动游戏管理
碧蓝航线自动化脚本终极指南:3小时学会全自动游戏管理 【免费下载链接】AzurLaneAutoScript Azur Lane bot (CN/EN/JP/TW) 碧蓝航线脚本 | 无缝委托科研,全自动大世界 项目地址: https://gitcode.com/gh_mirrors/az/AzurLaneAutoScript 还在为碧蓝…...
LeaguePrank:5分钟打造个性化英雄联盟客户端,段位头像随心换!
LeaguePrank:5分钟打造个性化英雄联盟客户端,段位头像随心换! 【免费下载链接】LeaguePrank 项目地址: https://gitcode.com/gh_mirrors/le/LeaguePrank 厌倦了千篇一律的英雄联盟客户端界面?想向好友展示王者段位却还在白…...
Log4Shell漏洞深度解析:Spring Boot日志注入原理与四层修复方案
1. 这个漏洞不是“远程执行代码”那么简单——它是一次对Java生态信任链的系统性击穿Log4j CVE-2021-44228,业内常简称为“Log4Shell”,2021年12月爆发时,我正在给一家金融客户的Spring Boot微服务集群做灰度发布前的安全加固。凌晨三点收到告…...
自然语言处理的实战项目:从0到1搭建属于自己的文本分类系统
对于软件测试从业者而言,日常工作中我们每天都会接触大量的文本数据:缺陷管理系统中的bug描述、测试用例的步骤说明、用户反馈的问题报告、需求文档的规格描述,甚至是接口返回的异常信息文本。这些非结构化文本往往隐含着关键业务信息&#x…...
