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数据库定时备份脚本+定时删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/173285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

某生物科技巨头:引入安全工具,推动基因科技领域智能化发展

某生物科技巨头是生物科技领域的领导者,业务覆盖行业全产业链、全应用领域,是全球领先的科学技术服务提供商和精准医疗服务运营商。一直以来,该生物科技机构都致力于加速推动以基因科技为支撑的生命数字化建设,实现批量短基因快速…

小型内衣洗衣机什么牌子好?口碑最好的小型洗衣机

很多人会觉得内衣洗衣机是智商税,洗个内衣只需要两分钟的事情,需要花个几百块钱去入手一个洗衣机吗?然而清洗贴身衣物的并不是一件简单的事情,如果只是简单的搓洗,内裤上看不见的细菌也无法消除,而且对来生…

【Ambari】HDP单机自动化安装(基础环境和MySQL脚本一键安装)

🦄 个人主页——🎐开着拖拉机回家_Linux,大数据运维-CSDN博客 🎐✨🍁 🪁🍁🪁🍁🪁🍁🪁🍁 🪁🍁🪁&am…

04:2440---内存控制器

目录 一:介绍 1:引入 2:概念 3:通信 A:片选信号 B:片选信号的地址空间范围 ​​​​ 4:地址线 A:不同位数的接法 B:访问原理 C:访问地址 5:时序 1:NOR FLASH A:2440NOR FLASH时序 B:原理/时序图 C:寄存器 6:SDARM A:访问方式 B:原理图 C:BWSCON D:BANKCON…

海外Leads Generation产业:中国出海群体的行业大机会

Leads Generation(简称LeadsGen)指的是集中精力吸引和开发潜在客户的营销策略。通过引导式的营销策略,企业分发内容吸引潜在客户,引导客户留下电话/邮件/姓名等信息。基于这些信息,企业可建立潜在客户数据库&#xff0…

一文读懂:IOPS、延迟和吞吐量等存储性能指标

各位ICT的小伙伴们大家好呀, 在我们谈存储性能的时候,总会听到IOPS、延迟(Latency)、带宽(Bandwidth)、吞吐量(Throughput)以及响应时间(Response Time)等技…

『Linux升级路』基础开发工具——make/Makefile

🔥博客主页:小王又困了 📚系列专栏:Linux 🌟人之为学,不日近则日退 ❤️感谢大家点赞👍收藏⭐评论✍️ 目录 一、认识make/Makefile 📒1.1make/Makefile的优点 📒…

EM32DX-C1【分布式io】

1设备类型: 电压:DC24V 输入16点 输出16点雷赛 EM32DX-C1 模块是一款基于 ASIC 技术的高性能、高可靠性的 CANopen 总线数字 量输入输出扩展模块,具有 16 路通用输入接口和 16 路通用输出接口。输入输出接口均采用光 电隔离和…

【yolov5人行道-斑马线目标检测】

yolov5人行道-斑马线目标检测 数据集yolov5人行道-斑马线目标检测检测模型 数据集 YOLOv5是一种目标检测算法,可以用于检测图像中的人行道-斑马线。在目标检测领域,YOLOv5通过结合多种技术手段,包括使用Mosaic数据增强操作、自适应锚框计算与…

SDN之Ubuntn20.04OpenDaylight控制器的安装

目录 1.OpenDaylight简介2.安装JAVA环境3.安装OpenDaylight4.问题总结 1.OpenDaylight简介 OpenDaylight(ODL)是一个开源的软件定义网络(SDN)控制器平台,提供了非常美观且功能完善的可视化管理界面,方便用…

redis Redis::geoAdd 无效,phpstudy 如何升级redis版本

redis 查看当前版本命令 INFO SERVERwindows 版redis 进入下载 geoadd 功能在3.2之后才有的,但是phpstudy提供的最新的版本也是在3.0,所以需要升级下 所以想出一个 挂狗头,卖羊肉的方法,下载windows 的程序,直接替…

桥梁道路结冰传感器守护出行安全的重要工具

随着冬季的到来,气温逐渐降低,路面和桥梁容易结冰,给人们的出行带来安全隐患。为了解决这一问题, WX-JB2H 桥梁道路结冰传感器应运而生。本文将详细介绍桥梁道路结冰传感器的作用、原理及在冬季出行中的重要性。 一、桥梁道路结冰…

flink源码分析之功能组件(三)-rpc组件

简介 本系列是flink源码分析的第二个系列,上一个《flink源码分析之集群与资源》分析集群与资源,本系列分析功能组件,kubeclient,rpc,心跳,高可用,slotpool,rest,metrics,future。 本文解释rpc组件,rpc组件用于个核心组件,包括作业管理器,资源管理器和任务管理器之…

什么是高防IP?如何进行防护?怎样隐藏源站?

高防IP是针对互联网服务器遭受大流量的DDoS攻击后导致服务不可用的情况下,推出的付费增值服务,是目前最常用的一种防御DDoS攻击的手段。用户在数据不转移的情况下,就可以通过配置高防IP,将攻击流量引流到高防IP,防护系…

iOS移动应用程序的备案与SHA-1值查看

​ 目录 📝iOS移动应用程序的备案与SHA-1值查看 引言 第一部分:App备案 第二部分:查看SHA-1值 引言 在开发和发布移动应用程序时,进行App备案是非常重要的一步,它是确保您的应用在合规性方面符合相关法规的过程。…

2023-11-27 LeetCode每日一题(子数组的最小值之和)

2023-11-27每日一题 一、题目编号 907. 子数组的最小值之和二、题目链接 点击跳转到题目位置 三、题目描述 给定一个整数数组 arr,找到 min(b) 的总和,其中 b 的范围为 arr 的每个(连续)子数组。 由于答案可能很大&#xff…

记一次处理大数据而导致的内存溢出问题

问题 订单服务通过MQ进行订单同步时,刚启动可以正常消费,但是跑一会就会卡住,每次都是第8个kafka分区不行再进行消费,其他分区消费的很慢。 现象 首先,CPU超高,达到百分之300多;其次&#xf…

2023年双十二超声波清洗机如何选?有哪些值得购买的超声波清洗机?

通过眼科医院对近视眼统计报告说明,截止2023年3月27日,全国近视眼人数为3亿人,其中青少年近视约为2亿人,现在大部分人都离不开眼镜,也有很多人忽视了清洗眼镜的重要性,眼镜长时间的不清洗的话会很容易导致脸…

MyBatis Generator使用总结

MyBatis Generator使用总结 介绍具体使用数据准备插件引入配置条件构建讲解demo地址 介绍 MyBatis Generator (MBG) 是 MyBatis 的代码生成器。它能够根据数据库表,自动生成 java 实体类、dao 层接口(mapper 接口)及m…

【赠书第8期】工程效能十日谈

文章目录 前言 1 工程效能十日谈 1.1 制定清晰的目标和计划 1.2 引入先进的技术和工具 1.3 建立有效的沟通机制 1.4 灵活应对变化 1.5 确保资源充足 1.6 进行有效的风险管理 1.7 进行持续的监控和评估 1.8 优化团队合作 1.9 注重质量管理 1.10 进行项目总结和反思 …