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

shell脚本备份MySQL数据库和库下表

目录

注意:

一.脚本内容

二.执行效果

三.创建定时任务


注意:

  • 以下为对MySQL5.7.42版本数据库备份shell脚本参考
  • 运行备份的机器请确认mysqldump版本>5.7,否则备份参数--set-gtid-purged=OFF无效,考虑到一般数据库节点和备份节点不为同一节点,以下链接为mysql5.7.43的rpm安装包,解压后"yum localinstall -y mysql-community* 即可"

通过网盘分享的文件:mysql-5.7.43-1.el7.x86_64.rpm-bundle.tar
链接: https://pan.baidu.com/s/1C1dK_zeS0-p7ePih1ff4tg?pwd=cer9 提取码: cer9

  • 该脚本目前是对于整库、库下各表都做了备份,若不需要对各表进行备份,去除关于备表的for循环即可。

一.脚本内容

#!/bin/bash
# 定义连接mysql的用户、密码、地址、端口
mysql_user="root"
mysql_pass="SLBmysql2025"
mysql_host="192.168.2.199"
mysql_port="20307"
# 定义排除数据库变量
exdbname='information_schema|performance_schema|sys|mysql'
date="$(date +"%Y-%m-%d")"
# 定义备份路径变量
bak_path="/data/mysql/back"
# 日志存放位置
log_file="$bak_path/$date/backup.log"
# 定义日志保留天数
retain_days=7
# 定义备份参数
dump_opts='--set-gtid-purged=OFF --single-transaction --no-autocommit'
# 检查备份路径是否存在,不存在则创建
if [ ! -d "$bak_path" ]; thenmkdir -p "$bak_path"
fi
# 获取数据库列表,排除指定数据库
#db_list=$(mysql -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port -e 'SHOW DATABASES;' 2>/dev/null | sed '1d' | grep -Ev "^($exdbname)$")
db_list=$(mysql -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port -Bse 'SHOW DATABASES;' 2>/dev/null | grep -Ev "^($exdbname)$")
# 检查是否获取到数据库列表
if [ -z "$db_list" ]; thenecho "未获取到有效的数据库列表,请检查 MySQL 连接和权限。" > $log_fileexit 1
fi
# 对每个数据库进行操作
for db in $db_list; do# 创建数据库对应的备份目录db_backup_dir="$bak_path/$date/$db"SIZE=$(mysql -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port --silent --skip-column-names -e "SELECT ROUND(SUM(data_length) / 1024 / 1024, 0) FROM information_schema.TABLES WHERE table_schema=\"$db\";")if [ ! -d "$db_backup_dir" ]; thenmkdir -p "$db_backup_dir"fi# 备份整个数据库mysqldump -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port $dump_opts -B "$db" 2>/dev/null | gzip > "$db_backup_dir/${db}_$(date +%F).sql.gz"if [ $? -ne 0 ]; thenecho "备份数据库 $db 失败。" >> $log_fileelseecho "数据库 $db 备份成功,存放路径 $db_backup_dir/${db}_$(date +%F).sql.gz,大小为 $SIZE M" >> $log_filefi# 获取数据库中的表列表tb_list=$(mysql -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port -N -e "SHOW TABLES FROM $db" 2>/dev/null)# 检查是否获取到表列表if [ -z "$tb_list" ]; thenecho "未获取到数据库 $db 中的表列表。" >> $log_filecontinuefi# 对每个表进行操作for tb in $tb_list; do# 备份单个表mysqldump -u$mysql_user -p$mysql_pass -h$mysql_host -P$mysql_port $dump_opts "$db" "$tb" 2>/dev/null | gzip > "$db_backup_dir/${db}_${tb}_$(date +%F).sql.gz"if [ $? -ne 0 ]; thenecho "备份表 $db.$tb 失败。" >> $log_fileelseecho "表 $db.$tb 备份成功,存放路径 $db_backup_dir/${db}_${tb}_$(date +%F).sql.gz" >> $log_filefidone
donefind $bak_path -mtime +$retain_days -exec rm -f {} \;

二.执行效果

[root@master01 mysql]# bash sh/backup.sh 
mysql: [Warning] Using a password on the command line interface can be insecure.
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@master01 mysql]# ll
total 12
drwxr-xr-x 3 root    root   24 Feb 17 22:19 back
drwxr-xr-x 7 polkitd root 4096 Feb 17 22:15 data
-rw-r--r-- 1 root    root 1802 Feb 16 18:18 my.cnf
-rw-r--r-- 1 root    root  242 Feb 16 18:18 mysql.txt
drwxr-xr-x 2 root    root   23 Feb 17 22:19 sh
[root@master01 mysql]# cd back/2025-02-17/
[root@master01 2025-02-17]# ll
total 4
-rw-r--r-- 1 root root 436 Feb 17 22:19 backup.log
drwxr-xr-x 2 root root  73 Feb 17 22:19 slb
drwxr-xr-x 2 root root  76 Feb 17 22:19 test
[root@master01 2025-02-17]# du -sh ./*
4.0K    ./backup.log
24K     ./slb
24K     ./test
[root@master01 2025-02-17]# cat backup.log 
数据库 slb 备份成功,存放路径 /data/mysql/back/2025-02-17/slb/slb_2025-02-17.sql.gz,大小为 0 M
表 slb.students 备份成功,存放路径 /data/mysql/back/2025-02-17/slb/slb_students_2025-02-17.sql.gz
数据库 test 备份成功,存放路径 /data/mysql/back/2025-02-17/test/test_2025-02-17.sql.gz,大小为 0 M
表 test.employees 备份成功,存放路径 /data/mysql/back/2025-02-17/test/test_employees_2025-02-17.sql.gz
[root@master01 2025-02-17]# pwd
/data/mysql/back/2025-02-17

三.创建定时任务

[root@master01 sh]# tail -1 /etc/crontab 
0 2 * * * root /usr/bin/bash /data/mysql/sh/mysql_backup.sh

相关文章:

shell脚本备份MySQL数据库和库下表

目录 注意: 一.脚本内容 二.执行效果 三.创建定时任务 注意: 以下为对MySQL5.7.42版本数据库备份shell脚本参考运行备份的机器请确认mysqldump版本>5.7,否则备份参数--set-gtid-purgedOFF无效,考虑到一般数据库节点和备份…...

Unity Shader Graph 2D - Procedural程序化图形之渐变的正弦波形

前言 正弦波形也是一种常用、常见的程序化图形,合理的使用正弦波形会创作出一些有趣、美观和丰富的效果,本文将使用Unity Shader Graph来实现一个正弦波形效果,帮助理解和实践Unity Shader Graph以及正弦函数。 创建一个名为SineWave的Shader…...

【算法与数据结构】并查集详解+题目

目录 一,什么是并查集 二,并查集的结构 三,并查集的代码实现 1,并查集的大致结构和初始化 2,find操作 3,Union操作 4,优化 小结: 四,并查集的应用场景 省份…...

国家队出手!DeepSeek上线国家超算互联网平台!

目前,国家超算互联网平台已推出 DeepSeek – R1 模型的 1.5B、7B、8B、14B 版本,后续还会在近期更新 32B、70B 等版本。 DeepSeek太火爆了!在这个春节档,直接成了全民热议的话题。 DeepSeek也毫无悬念地干到了全球增速最快的AI应用。这几天,国内的云计算厂家都在支持Dee…...

H5接入支付宝手机网站支付并实现

小程序文档 - 支付宝文档中心 1.登录 支付宝开放平台 创建 网页/移动应用 2.填写创建应用信息 3.配置开发设置 4.网页/移动应用:需要手动上线。提交审核后,预计 1 个工作日的审核时间。详细步骤可点击查看 上线应用 。应用上线后,还需要完成…...

Win10环境借助DockerDesktop部署大数据时序数据库Apache Druid

Win10环境借助DockerDesktop部署最新版大数据时序数据库Apache Druid32.0.0 前言 大数据分析中,有一种常见的场景,那就是时序数据,简言之,数据一旦产生绝对不会修改,随着时间流逝,每个时间点都会有个新的…...

(三)Axure制作转动的唱片

效果图 属性: 图标库:iconfont-阿里巴巴矢量图标库 方形图片转为圆角图片,裁剪,然后加圆角, 唱片和底图是两个图片,点击播放,唱片在旋转。 主要是播放按钮和停止按钮,两个动态面板…...

[JVM篇]分代垃圾回收

分代垃圾回收 分代收集法是目前大部分 JVM 所采用的方法,其核心思想是根据对象存活的不同生命周期将内存划分为不同的域,一般情况下将 GC 堆划分为老生代(Tenured/Old Generation)和新生代(Young Generation)。老生代的特点是每次垃圾回收时只有少量对象…...

SpringBoot多数据源实践:基于场景的构建、实现和事务一体化研究

1. 多数据源应用场景剖析 1.1 业务驱动的多数据源需求 数据量与业务复杂度引发的分库分表:在现代企业级应用中,随着业务的不断拓展和用户量的持续增长,数据量呈爆炸式增长。例如,在大型电商平台中,用户数据、订单数据…...

鸿蒙应用开发者基础

目录 判断题 单选题 多选题 判断题 1、 在http模块中,多个请求可以使用同一个httpRequest对象,httpRequest对象可以复用。(错误) 2、订阅dataReceiverProgress响应事件是用来接收HTTP流式响应数据。(错误&#xff0…...

Java面试第二山!《计算机网络》!

在 Java 面试里,计算机网络知识是高频考点,今天就来盘点那些最容易被问到的计算机网络面试题,帮你轻松应对面试,也方便和朋友们一起探讨学习。 一、HTTP 和 HTTPS 的区别 1. 面试题呈现 HTTP 和 HTTPS 有什么区别?在…...

2025最新Java面试题大全(整理版)2000+ 面试题附答案详解

很多 Java 工程师的技术不错,但是一面试就头疼,10 次面试 9 次都是被刷,过的那次还是去了家不知名的小公司。 问题就在于:面试有技巧,而你不会把自己的能力表达给面试官。 应届生:你该如何准备简历&#…...

低空经济:开启未来空中生活的全新蓝海

引言 随着科技的进步,我们不再仅仅依赖地面交通和传统物流。你是否曾幻想过,未来的某一天,快递、外卖可以像魔法一样直接从空中送到你手中?或者,你能乘坐小型飞行器,快速穿梭于城市之间,告别拥堵…...

【机器学习】线性回归与一元线性回归

【机器学习系列】 KNN算法 KNN算法原理简介及要点 特征归一化的重要性及方式线性回归算法 线性回归与一元线性回归 线性回归模型的损失函数 多元线性回归 多项式线性回归 线性回归与一元线性回归 V1.1线性回归问题线性方程的最优解一元线性回归一元线性回归的方程一元线性回归…...

MongoDB 7 分片副本集升级方案详解(上)

#作者:任少近 文章目录 前言:Mongodb版本升级升级步骤环境1.1环境准备1.2standalone升级1.3分片、副本集升级 前言:Mongodb版本升级 在开始升级之前,请参阅 MongoDB下个版本中的兼容性变更文档,以确保您的应用程序和…...

Fiori APP配置中的Semantic object 小bug

在配置自开发程序的Fiori Tile时,需要填入Semantic Object。正常来说,是需要通过事务代码/N/UI2/SEMOBJ来提前新建的。 但是在S4 2022中,似乎存在一个bug,即无需新建也能输入自定义的Semantic Object。 如下,当我们任…...

坑多多之AC8257 i2c1 rtc-pcf8563

pcf85163 ordering information Ordering information Package Description Version Marking code PCF85163T/1 SO8 ① SOT96-1 PF85163 PCF85163TS/1 TSSOP8 ② SOT505-1 85163 ①plastic small outline package; 8 leads;body width 3.9 mm ②plastic thin…...

制作一个项目用于研究elementUI的源码

需求:修改el-tooltip的颜色,发现传递参数等方法都不太好用,也可以使用打断点的方式,但也有点麻烦,因此打算直接修改源码,把组件逻辑给修改了 第一步下载源码 源码地址 GitHub - ElemeFE/element: A Vue.j…...

Docker高级篇

1.Mysql主从复制Docker版本 mysql主从复制原理 binlog 1.新建主服务器容器实例 docker run -d -p 3307:3306 --privilegedtrue \ -v /opt/mysql8.4.3/log:/var/log/mysql \ -v /opt/mysql8.4.3/conf:/etc/mysql/conf.d \ -v /opt/mysql8.4.3/data:/var/lib/mysql \ -e MYSQL…...

OSI 参考模型和 TCP/IP 参考模型

数据通信是很复杂的,很难在一个协议中完成所有功能。因此在制定协议时经常采用的思路是将复杂的数据通信功能由若干协议分别完成,然后将这些协议按照一定的方式组织起来。最典型的是采用分层的方式来组织协议,每一层都有一套清晰明确的功能和…...

rocketmq-netty通信设计-request和response

1、NettyRemotingServer启动分析 org.apache.rocketmq.remoting.netty.NettyRemotingServer#start public void start() {this.defaultEventExecutorGroup new DefaultEventExecutorGroup(nettyServerConfig.getServerWorkerThreads(),new ThreadFactory() {private AtomicI…...

初识计算机网络

从此篇我将开始网络新篇章! 1. 网络发展史 最初的计算机之间相互独立存在,每个计算机只能持有自己的数据,数据无法共享。此时的计算机为独立模式 随着时代的发展,越来越需要计算机之间互相通信,共享软件和数据&#x…...

kamailio常见问题解答

常见问题解答 本页面接受贡献,你必须通过注册表单创建一个用户账户: https://www.kamailio.org/wiki/start?doregister 如果你有一个适合收录进常见问题解答的问题,并且你不知道答案,那就添加这个问题,并将答案设置…...

Flask框架入门完全指南

一、初识Flask:轻量级框架的魅力 1.1 Flask框架定位 Flask作为Python最受欢迎的轻量级Web框架,以"微核心可扩展"的设计哲学著称。其核心代码仅约2000行,却支持通过扩展实现完整Web开发功能。这种设计使得开发者可以: …...

用deepseek学大模型05逻辑回归

deepseek.com:逻辑回归的目标函数,损失函数,梯度下降 标量和矩阵形式的数学推导,pytorch真实能跑的代码案例以及模型,数据,预测结果的可视化展示, 模型应用场景和优缺点,及如何改进解决及改进方法数据推导。…...

为什么要选择3D机器视觉检测

选择3D机器视觉检测的原因主要包括以下几点: 高精度测量 复杂几何形状:能够精确测量复杂的三维几何形状。 微小细节:可捕捉微小细节,适用于高精度要求的行业。全面数据获取 深度信息:提供深度信息,弥补2D视…...

CentOS上安装WordPress

在CentOS上安装WordPress是一个相对直接的过程,可以通过多种方法完成,包括使用LAMP(Linux, Apache, MySQL, PHP)栈或使用更现代的LEMP(Linux, Nginx, MySQL, PHP)栈。 我选择的是(Linux, Nginx…...

webshell通信流量分析

环境安装 Apatche2 php sudo apt install apache2 -y sudo apt install php libapache2-mod-php php-mysql -y echo "<?php phpinfo(); ?>" | sudo tee /var/www/html/info.php sudo ufw allow Apache Full 如果成功访问info.php&#xff0c;则环境安…...

高效高并发调度架构

以下是从架构层面为你提供的适合多核CPU、多GPU环境下API客户端、服务端高级调度&#xff0c;以实现高效并发大规模与用户交互的技术栈&#xff1a; 通信协议 gRPC&#xff1a;基于HTTP/2协议&#xff0c;具有高性能、低延迟的特点&#xff0c;支持二进制序列化&#xff08;通…...

MYSQL下载安装及使用

MYSQL官网下载地址&#xff1a;https://downloads.mysql.com/archives/community/ 也可以直接在服务器执行指令下载&#xff0c;但是下载速度比较慢。还是自己下载好拷贝过来比较快。 wget https://dev.mysql.com/get/Downloads/mysql-5.7.38-linux-glibc2.12-x86_64.tar.gz 1…...

Python elasticsearch客户端连接常见问题整理

python 访问 elasticsearch 在python语言中&#xff0c;我们一般使用 pip install elasticsearch 软件包&#xff0c;来访问es服务器。 正确用法 本地安装elasticsearch时&#xff0c;应指定与服务端相同的大版本号&#xff1a; pip install elasticsearch7.17.0然后就可以…...

相得益彰,Mendix AI connector 秒连DeepSeek ,实现研发制造域场景

在当今快速发展的科技领域&#xff0c;低代码一体化平台已成为企业数字化转型的关键工具&#xff0c;同时&#xff0c;大型语言模型&#xff08;LLM&#xff09;如 DeepSeek 在自动生成代码和提供智能建议方面表现出色。 Mendix 于近期发布的 GenAI 万能连接器&#xff0c;目前…...

Python PyCharm DeepSeek接入

Python PyCharm DeepSeek接入 创建API key 首先进入DeepSeek官网&#xff0c;https://www.deepseek.com/ 点击左侧“API Keys”&#xff0c;创建API key&#xff0c;输出名称为“AI” 点击“创建"&#xff0c;将API key保存&#xff0c;复制在其它地方。 在PyCharm中下…...

pytest测试专题 - 2.1 一种推荐的测试目录结构

<< 返回目录 1 pytest测试专题 - 2.1 一种推荐的测试目录结构 2 pytest 项目目录结构及文件功能 以下是典型 pytest 项目中常见的文件和目录结构及其功能的概述&#xff1a; 2.1 文件/目录结构 文件/目录功能描述test_ 文件* 主测试文件&#xff0c;命名通常以 test_…...

Dify本地安装

目录 方式一docker安装&#xff1a; 方式二源码安装&#xff1a; Dify本地安装可以用docker方式&#xff0c;和源码编译方式。 先到云厂商平台申请一台Centos系统云主机&#xff0c;网络选择海外&#xff0c;需要公网IP&#xff0c;再按一下流程操作&#xff1a; 方式一doc…...

MySQL、MariaDB 和 TDSQL 的区别

MySQL、MariaDB 和 TDSQL 是三种不同的数据库管理系统&#xff0c;它们在设计理念、功能、性能和使用场景上有一些显著的区别。 以下是对这三者的详细比较和介绍。 1. MySQL 概述 类型&#xff1a;关系型数据库管理系统&#xff08;RDBMS&#xff09;。开发者&#xff1a;最…...

Java 设计模式之桥接模式

文章目录 Java 设计模式之桥接模式概述UML代码实现 Java 设计模式之桥接模式 概述 桥接模式(Bridge)&#xff1a;将抽象部分与它的实现部分分离&#xff0c;使它们都可以独立地变化。通过桥接模式&#xff0c;可以避免类爆炸问题&#xff0c;并提高系统的可扩展性。 UML 核心…...

【Linux】网络基础

目录 一、协议分层 &#xff08;一&#xff09;计算机网络 &#xff08;二&#xff09;协议分层 &#xff08;三&#xff09;OSI模型 &#xff08;四&#xff09;TCP/IP协议 二、网络传输过程 三、IP地址和MAC地址 &#xff08;一&#xff09;IP地址 &#xff08;二&a…...

[C++]多态详解

目录 一、多态的概念 二、静态的多态 三、动态的多态 3.1多态的定义 3.2虚函数 四、虚函数的重写&#xff08;覆盖&#xff09; 4.1虚函数 4.2三同 4.3两种特殊情况 &#xff08;1&#xff09;协变 &#xff08;2&#xff09;析构函数的重写 五、C11中的final和over…...

Python常见面试题的详解7

1. 内置的数据结构有哪几种 Python 中有多种内置的数据结构&#xff0c;主要分为以下几种&#xff1a; 1.1 数值类型 整数&#xff08;int&#xff09;&#xff1a;用于表示整数&#xff0c;没有大小限制。例如&#xff1a;1, -5, 100。浮点数&#xff08;float&#xff09;…...

C++ ——构造函数

1、作用&#xff1a;创建对象时&#xff0c;给对象的属性进行初始化 2、特点 &#xff08;1&#xff09;构造函数与类同名 &#xff08;2&#xff09;如果没有显式给出构造函数&#xff0c;编译器会给出默认的构造函数&#xff08;参数为空&#xff0c;并且函数体也为空&#…...

PostgreSQL如何关闭自动commit

PostgreSQL如何关闭自动commit 在 PostgreSQL 中&#xff0c;默认情况下&#xff0c;每个 SQL 语句都会自动提交&#xff08;即 AUTOCOMMIT 是开启的&#xff09;。如果希望关闭自动提交&#xff0c;以便手动控制事务的提交和回滚&#xff0c;可以通过以下方法实现。 1 使用 …...

HCIA项目实践--静态路由的总结和简单配置

七、静态路由 7.1 路由器获取未知网段的路由信息&#xff1a; &#xff08;1&#xff09;静态路由&#xff1a;网络管理员手工配置的路由条目&#xff0c;它不依赖网络拓扑的变化进行自动更新&#xff0c;而是根据管理员预先设定的路径来转发数据包。其优点是配置简单、占用系…...

B站视频同步思维导图(全)

前言 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家&#xff1a;https://www.captainbed.cn/z 文章目录 前言分段视频一张思维导图版本手写版本联系作者 分段视频 Java基础 并发编程 MySQL redis…...

C++游戏开发流程图

C游戏开发流程图如下&#xff1a; #mermaid-svg-by3hx6H65qEwr5mV {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-by3hx6H65qEwr5mV .error-icon{fill:#552222;}#mermaid-svg-by3hx6H65qEwr5mV .error-text{fill:#5…...

回顾Golang的Channel与Select第二篇

深入掌握Go Channel与Select&#xff1a;从原理到生产级实践 一、Channel基础&#xff1a;不只是数据管道 1.1 通道的完整生命周期&#xff08;可运行示例&#xff09; package mainimport ("fmt""time" )func main() {// 创建缓冲通道ch : make(chan i…...

将OpenWrt部署在x86服务器上

正文共&#xff1a;1234 字 40 图&#xff0c;预估阅读时间&#xff1a;2 分钟 如果你问ChatGPT有哪些开源的SD-WAN方案&#xff0c;他会这样答复你&#xff1a; 我们看到&#xff0c;OpenWrt也属于比较知名的开源SD-WAN解决方案。当然&#xff0c;在很久之前&#xff0c;我就发…...

Spring Boot 常用依赖详解:如何选择和使用常用依赖

在Spring Boot项目中&#xff0c;依赖&#xff08;Dependencies&#xff09;是项目的核心组成部分。每个依赖都提供了一些特定的功能或工具&#xff0c;帮助我们快速开发应用程序。本文将详细介绍Spring Boot中常用的依赖及其作用&#xff0c;并指导你如何根据项目需求选择合适…...

day51 第十一章:图论part02

99. 岛屿数量 深搜 每一块的上下左右都遍历过了之后&#xff0c;这块陆地就遍历完了。是深搜&#xff0c;不是广搜 深搜&#xff1a;递归 def dfs(): if .....: 终止条件 dfs(子节点) directions [[0,1],[1,0],[0,-1],[-1,0]]def dfs(grid, visited, x, y):if grid[x][y]…...

介绍一下 Octave

已思考完成 收起 好的&#xff0c;我现在要回答用户关于介绍Octave的问题。首先&#xff0c;我需要整理提供的参考内容&#xff0c;看看有哪些关键点需要覆盖。 用户给的参考内容很多&#xff0c;包括知乎文章和网页资料&#xff0c;涵盖了Octave的历史、功能、语法、与MATLAB的…...