Mysql使用周期性计划任务定时备份,发现备份的文件都是空的?为什么?如何解决?

👨🎓博主简介
🏅云计算领域优质创作者
🏅华为云开发者社区专家博主
🏅阿里云开发者社区专家博主
💊交流社区:运维交流社区 欢迎大家的加入!
🐋 希望大家多多支持,我们一起进步!😄
🎉如果文章对你有帮助的话,欢迎 点赞 👍🏻 评论 💬 收藏 ⭐️ 加关注+💗
文章目录
- 前言 / 问题说明
- 问题分析
- 1、首先我们分析手动执行是否成功
- 2、我们分析定时任务中的命令写的是否正确
- 3、检查crontab中的执行环境
- 4、发现问题,周期性计划任务中执行找不到mysqldump命令
- 问题解决
前言 / 问题说明
最近在做数据库备份,使用的是脚本的方式备份多个库,手动执行脚本备份是没问题的,然后就使用了周期性计划任务开始定时备份;
但是有一天,我说看一下备份的数据,结果一看,定时任务备份的sql文件压缩包都是4k,解压出来的…sql都是大小都是0,里面更是没有数据都是空的,这是为什么呢?
问题分析
1、首先我们分析手动执行是否成功
首先我们分析手动执行是否成功,使用的脚本,那么我们就去存放脚本的路径下执行一下脚本看看备份的是否有数据;
# 先切换到存放脚本的目录下
[root@csdn data]# cd /usr/local/mysql/data/# 执行备份脚本
[root@csdn data]# sh back.sh
mysqldump: [Warning] Using a password on the command line interface can be insecure.
脚本执行完,我们去备份数据库文件的路径下看看大小;
# 切换到备份数据库文件的路径下
[root@csdn data]# cd backup/data/
# 查看大小
[root@csdn data]# du -sh *
4.0K 20231120.sql.tgz
4.0K 20231121.sql.tgz
4.0K 20231122.sql.tgz
4.0K 20231123.sql.tgz
4.0K 20231124.sql.tgz
4.0K 20231125.sql.tgz
4.0K 20231126.sql.tgz
236K 20231127.sql.tgz
# 最后一个就是刚刚手动执行备份的了;明显和前面的不一样;
然后我们解压下来看
# 解压备份的库的压缩包
[root@csdn data]# tar xf 20231127.sql.tgz
# 查看大小
[root@csdn data]# du -sh *
4.0K 20231120.sql.tgz
4.0K 20231121.sql.tgz
4.0K 20231122.sql.tgz
4.0K 20231123.sql.tgz
4.0K 20231124.sql.tgz
4.0K 20231125.sql.tgz
4.0K 20231126.sql.tgz
680K 20231127.sql
236K 20231127.sql.tgz
可以看到解压下来是680K,我们可以进去看看,是有数据的;
那么就可以排除脚本的本身问题;
2、我们分析定时任务中的命令写的是否正确
执行定时任务一般里面需要写绝对路径;
我的定时任务是在/etc/crontab下写着,我们来看看;
cat /etc/crontab

可以看到写的是:0 0 */1 * * root /bin/sh /usr/local/mysql/data/back.sh,每天备份一次,而且都写的绝对路径;
我们把他这个绝对路径拿出来试试看看执行一下是否成功?
# 定时任务中的脚本执行命令
[root@csdn data]# /bin/sh /usr/local/mysql/data/back.sh
mysqldump: [Warning] Using a password on the command line interface can be insecure.# 然后去备份数据库的存储路径看看
[root@csdn data]# cd /usr/local/mysql/data/backup/data/# 查看文件大小
[root@csdn data]# du -sh *
4.0K 20231120.sql.tgz
4.0K 20231121.sql.tgz
4.0K 20231122.sql.tgz
4.0K 20231123.sql.tgz
4.0K 20231124.sql.tgz
4.0K 20231125.sql.tgz
4.0K 20231126.sql.tgz
236K 20231127.sql.tgz
可以看到是没问题的,如果刚刚备份过怕没有覆盖,可以自己删除,一般备份是会直接覆盖的,而且你解压下来的文件也会默认删除;
也是同样的方法,看着备份的压缩包的大小是没问题的,解压下来看看;
[root@csdn data]# tar xf 20231127.sql.tgz
[root@csdn data]# du -sh *
4.0K 20231120.sql.tgz
4.0K 20231121.sql.tgz
4.0K 20231122.sql.tgz
4.0K 20231123.sql.tgz
4.0K 20231124.sql.tgz
4.0K 20231125.sql.tgz
4.0K 20231126.sql.tgz
680K 20231127.sql
236K 20231127.sql.tgz
也是680K,可以vim进入查看一下是否有数据;经过查看是有数据的;
那么也可以排除计划任务的命令是没有问题的;哪是为什么呢?
3、检查crontab中的执行环境
既然确定脚本没有问题,并且手动执行能够正确备份数据,那么问题可能出在 crontab 设置或执行环境上。以下是排查的一些步骤:
- 1. 检查 crontab 语法:确保你的 crontab 语法是正确的。一个常见的错误是忘记指定正确的路径或环境变量。这个是没问题的;
- 2. 查看 cron 日志:很多 Linux 发行版默认并不会为 cron 任务记录日志。但如果你的系统配置了 cron 日志,那么检查
/var/log/cron或/var/log/syslog中的相关条目可能会提供有用的信息。这个也是没问题的。 - 3. 输出重定向:确保 cron 任务没有把输出(包括错误输出)重定向到
/dev/null或其他看不到的地方。为了更好地调试,可以考虑将输出重定向到一个特定的日志文件。
例如:
将定时任务改为每分钟执行一次,方便查看,加一个追加日志到执行文件中,并且把错误、非错误信息都存放到这个文件中。
* * * * * root /bin/sh /usr/local/mysql/data/back.sh >> /usr/local/mysql/data/backup/logfile.log 2>&1
这样,就可以查看 logfile.log 来检查是否有任何错误或提示信息。
- 4. 环境变量:cron 执行的环境与登录 shell 的环境可能不同。某些环境变量,如
PATH,可能在 cron 中并未设置,导致你的脚本中的某些命令无法找到。考虑在脚本开头定义重要的环境变量,或者在 crontab 文件中设置它们。
修改完crontab中的定时任务,让他将执行命令的输出 输出到指定文件中,每分钟执行一次,我们等待一分钟,去看一下指定的目录下的文件;
# 切换到指定目录
[root@csdn data]# cd /usr/local/mysql/data/backup/
# 查看输出的文件内容
[root@csdn backup]# cat logfile.log
/usr/local/mysql/data/back.sh: line 47: mysqldump: command not found
/usr/local/mysql/data/back.sh: line 47: mysqldump: command not found
/usr/local/mysql/data/back.sh: line 47: mysqldump: command not found
/usr/local/mysql/data/back.sh: line 47: mysqldump: command not found
可以看到都是找不到mysqldump命令,这就是第4种,环境变量的问题了;
4、发现问题,周期性计划任务中执行找不到mysqldump命令
如果在周期性计划任务执行时输出找不到 mysqldump 命令,那么很可能是因为 PATH 环境变量的问题。Cron 任务运行时的环境变量可能与你在终端中运行的环境变量不同,尤其是 PATH 变量。mysqldump 可能不在 cron 的 PATH 中,因此无法找到。
- 解决方法:
①、 查看mysqldump绝对路径:可以通过运行 which mysqldump 在终端中找到它的完整路径。
[root@csdn backup]# which mysqldump
/usr/local/mysql/bin/mysqldump
可以看到是在/usr/local/mysql/bin/mysqldump,那么你可以在脚本中直接使用这个路径来调用它,而不是简单地使用 mysqldump。
②、 在脚本中设置 PATH:在脚本的开头定义 PATH 环境变量,确保它包含 mysqldump 的路径。
例如:
#!/bin/bash# 配置添加mysqldump环境变量
PATH=/usr/local/mysql/bin/:$PATH
配置完之后,等待一分钟,查看输出的日志信息;
[root@csdn backup]# tailf logfile.log

可以看到已经没有报错了;这个是提示,说你使用了明文密码,不影响;
看着是备份没有什么问题了,我们可以去看备份的数据;
# 切换到备份数据的目录
[root@csdn backup]# cd /usr/local/mysql/data/backup/data/
# 查看大小
[root@csdn data]# du -sh *
4.0K 20231120.sql.tgz
4.0K 20231121.sql.tgz
4.0K 20231122.sql.tgz
4.0K 20231123.sql.tgz
4.0K 20231124.sql.tgz
4.0K 20231125.sql.tgz
4.0K 20231126.sql.tgz
236K 20231127.sql.tgz
可以看到大小也是没问题的,然后我们解压下来看看文件数据;
# 解压备份的数据压缩包
[root@csdn data]# tar xf 20231127.sql.tgz
# 查看大小
[root@csdn data]# du -sh *
4.0K 20231120.sql.tgz
4.0K 20231121.sql.tgz
4.0K 20231122.sql.tgz
4.0K 20231123.sql.tgz
4.0K 20231124.sql.tgz
4.0K 20231125.sql.tgz
4.0K 20231126.sql.tgz
308K 20231127.sql
236K 20231127.sql.tgz# 查看数据
[root@csdn data]# vim 20231127.sql
都是有数据的,那么问题就解决了;
周期性计划任务中的输出日志,如果想删除就可以删除,不想删除也不影响,但是会占空间,也不大。
问题解决
推荐一个mysql定时备份的脚本:mysql数据库定时备份脚本+定时删除
相关文章:
Mysql使用周期性计划任务定时备份,发现备份的文件都是空的?为什么?如何解决?
👨🎓博主简介 🏅云计算领域优质创作者 🏅华为云开发者社区专家博主 🏅阿里云开发者社区专家博主 💊交流社区:运维交流社区 欢迎大家的加入! 🐋 希望大家多多支…...
算法leetcode|90. 子集 II(rust重拳出击)
文章目录 90. 子集 II:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java: 90. 子集 II: 给你一个整数数组 nums ,其…...
git 泄露
得到flag有两种方法: 1、版本比对:git diff 用法:git diff <分支名1> <分支名2> 2、版本回退:git reset 用法:git reset --hard <分支名> python2 GitHack.py http://www.example.com/.git/ g…...
Elasticsearch知识
目录 Elasticsearch逻辑设计和物理设计 逻辑设计物理设计Elasticsearch原理 倒排索引文档的分析过程保存文档搜索文档写数据的底层原理 数据刷新(fresh)事务日志的写入ES在大数据量下的性能优化 文件系统缓存优化数据预热文档(Document&…...
极智芯 | 解读国产AI算力天数智芯产品矩阵
欢迎关注我的公众号 [极智视界],获取我的更多经验分享 大家好,我是极智视界,本文分享一下 解读国产AI算力天数智芯产品矩阵。 邀您加入我的知识星球「极智视界」,星球内有超多好玩的项目实战源码和资源下载,链接:https://t.zsxq.com/0aiNxERDq 天数智芯属于国产 GPGPU 阵…...
使用 OpenCV 发现圆角矩形的轮廓
OpenCV - 如何找到圆角矩形的矩形轮廓? 问题: 在图像中,我试图找到矩形对象的圆角轮廓。然而,我对两者的尝试 HoughLinesP 并 findContours 没有产生预期的结果。 我的目标是找到一个类似于以下形状的矩形: 。 代码: import cv2 import matplotlib.pyplot as plt…...
vscode项目推送到git
1、打开项目文件 打开文件后点击vs code左侧工具栏中第三个源代码管理图标,点击初始化仓库,此时会创建一个本地仓库会检查该项目中的文件变更 2、创建远程仓库 点击克隆/下载,复制HTTPS地址 3、添加远程地址 1)图形化操作 2…...
COMP2121 Discrete Mathematics
COMP2121 Discrete Mathematics 需要可WeChat: zh6-86...
【随笔记录】VMware搭建python开发环境
Vmware虚拟机总是连接不到网络。 环境为:笔记本WLAN 解决方法。 1.直接使用VMware 编辑->虚拟网络编辑器->恢复默认设置。 2.取消网卡的IP的dhcp获取,改为static。网关为提供IP的主机的网络IP(NAT模式) 3.windows打开共享网…...
基于C++实现水仙花数
1、水仙花数的连营 1.1、水仙花数 在学习程序设计课程时,大多数读者一定采用循环结构编写过求解水仙花数的程序。 【实例 1-1】水仙花数 一个三位整数(100~999),若各位数的立方和等于该数自身,则称其为“…...
关于一个类中引用两外一个类中的变量和方法,一个技巧可以提高开发效率
import static com.xx.xx.util.ext.xx.toJson; import static com.xx.xx.util.ext.smf.Cert.certMgrClient; 第一个引用一个方法,第二个引用一个变量, 引用后就可以直接通过变量名或者方法名就行使用,很方便,不要通过class.方式调…...
算法笔记:OPTICS 聚类
1 基本介绍 OPTICS(Ordering points to identify the clustering structure)是一基于密度的聚类算法 OPTICS算法是DBSCAN的改进版本 在DBCSAN算法中需要输入两个参数: ϵ 和 MinPts ,选择不同的参数会导致最终聚类的结果千差万别,因此DBCSAN…...
SSRF漏洞防御:黑白名单的编写
文章目录 SSRF漏洞防御:黑白名单的编写黑名单的制作白名单的制作 SSRF漏洞防御:黑白名单的编写 以pikachu靶场中SSRF(crul)为例我们可以看到未做任何防御 我们查看源代码 黑名单的制作 思路: 什么内容不能访问 构造代码 $xyarray("file" > "",&q…...
想要对网站进行安全监测,安全SCDN效果怎么样?
随着互联网的迅速成长,各种网站出现的越来越多,个人网站、企业网站等,同时网站竞争也越来越强。随着用户对网站需求增多,对网站的安全也愈发受到人们的重视。那么我们日常网站运营中,有需要对网站进行安全监控…...
操作符extends的作用是什么?
在TypeScript中,extends关键字用于创建类之间的继承关系。它允许一个类(子类)继承另一个类(父类)的属性和方法,并可以在子类中添加新的属性和方法或者修改继承自父类的属性和方法。 extends的作用是实现类…...
跟着chatgpt一起学|1.spark入门之MLLib
chatgpt在这一章表现的不好,所以我主要用它来帮我翻译文章提炼信息 1.前言 首先找到spark官网里关于MLLib的链接 spark内一共有2种支持机器学习的包, 一种是spark.ml,基于DataFrame的,也是目前主流的 另一种则是spark.mllib,是基于RDD的…...
JAVA后端开发技术报告
JAVA后端开发技术报告 一、引言 随着互联网技术的不断发展,JAVA作为一门成熟的后端开发语言,应用范围广泛。本报告旨在介绍JAVA后端开发的相关技术,包括JAVA语言基础、Spring框架、数据库技术以及性能优化等方面,帮助开发者更好…...
销售心理学 如何了解客户的购买心理激发客户购买兴趣
销售心理学 如何了解客户的购买心理激发客户购买兴趣 在销售的世界里,掌握客户的购买心理,如同一把神奇的钥匙,能够解锁客户内心的需求和兴趣。如何巧妙地运用销售心理学,激发客户的购买欲望呢?以下是一些建议&#x…...
霍夫丁不等式(Hoeffding‘s inequality)
参考资料:Hoeffdings inequality | encyclopedia article by TheFreeDictionary 霍夫丁不等式(Hoeffdings inequality)描述了随机变量的和、与和的期望之差的上限;或者表述为:随机变量的均值、与均值的期望之差的上限。…...
【MATLAB源码-第90期】基于matlab的OQPSKsimulink仿真,对比初始信号和解调信号输出星座图。
操作环境: MATLAB 2022a 1、算法描述 正交偏移二进制相移键控(OQPSK, Orthogonal Quadrature Phase Shift Keying)是一种数字调制技术,主要用于高效无线数据传输。它是传统二进制相移键控(BPSK)的一个变…...
19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...
【网络】每天掌握一个Linux命令 - iftop
在Linux系统中,iftop是网络管理的得力助手,能实时监控网络流量、连接情况等,帮助排查网络异常。接下来从多方面详细介绍它。 目录 【网络】每天掌握一个Linux命令 - iftop工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...
Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件
今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...
Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
Linux-07 ubuntu 的 chrome 启动不了
文章目录 问题原因解决步骤一、卸载旧版chrome二、重新安装chorme三、启动不了,报错如下四、启动不了,解决如下 总结 问题原因 在应用中可以看到chrome,但是打不开(说明:原来的ubuntu系统出问题了,这个是备用的硬盘&a…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
Python Ovito统计金刚石结构数量
大家好,我是小马老师。 本文介绍python ovito方法统计金刚石结构的方法。 Ovito Identify diamond structure命令可以识别和统计金刚石结构,但是无法直接输出结构的变化情况。 本文使用python调用ovito包的方法,可以持续统计各步的金刚石结构,具体代码如下: from ovito…...
MFC 抛体运动模拟:常见问题解决与界面美化
在 MFC 中开发抛体运动模拟程序时,我们常遇到 轨迹残留、无效刷新、视觉单调、物理逻辑瑕疵 等问题。本文将针对这些痛点,详细解析原因并提供解决方案,同时兼顾界面美化,让模拟效果更专业、更高效。 问题一:历史轨迹与小球残影残留 现象 小球运动后,历史位置的 “残影”…...
Linux nano命令的基本使用
参考资料 GNU nanoを使いこなすnano基础 目录 一. 简介二. 文件打开2.1 普通方式打开文件2.2 只读方式打开文件 三. 文件查看3.1 打开文件时,显示行号3.2 翻页查看 四. 文件编辑4.1 Ctrl K 复制 和 Ctrl U 粘贴4.2 Alt/Esc U 撤回 五. 文件保存与退出5.1 Ctrl …...
