Leif の 坊

己亥中原兴似火,九月金陵凉至秋。
琴声已散弦犹振,雁飞九天声已留。

目录
MySQL使用mysqldump备份数据库脚本手工执行成功 crontab定时却失败的解决方法
/      

MySQL使用mysqldump备份数据库脚本手工执行成功 crontab定时却失败的解决方法

用crontab自动备份MySQL的时候导出总是为空,原因是corn的环境变量中没有mysqldump,所以用crontab执行mysqldump的时候要加上绝对路径,如:/usr/bin/mysqldump -u root -p123456 --default-character-set=utf8 --databases solo > root/solo.sql这样就可以了!

如果不知道绝对路径可以用which mysqldump或者whereis mysqldump查询

例如:

#!/bin/sh
# mongodump备份文件执行路径
mysqldump=/usr/bin/mysqldump 
# 备份存放路径                                        
backup_dir=/root/database_backup
# 获取当前系统时间,作为文件名的一部分                           
date=`date -d "today" +"%Y-%m-%dT%H-%M-%S"`  
# mins=10080 代表删除7天前的备份, 即只保留最近7天的备份      
mins=10080 
# 最终保存的数据库备份文件名                                                                         
tar_name="mysql_bak_${date}.tar.gz"                                 
cd ${backup_dir}
mkdir -p ${backup_dir}/${date}
# 备份项目数据库
${mysqldump} -h HOST -u USERNAME -pPASSWORD --default-character-set=utf8   --databases DBNAME > ${backup_dir}/${date}/DBNAME.sql    
# 压缩为.tar.gz格式         
tar -zcvf ${tar_name} ${date}  
# 删除7天前的备份文件        
find ${backup_dir}/ -mmin +${mins} -exec rm -rf {} \;          

“The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.” – Tom Cargill

标  题MySQL使用mysqldump备份数据库脚本手工执行成功 crontab定时却失败的解决方法
作  者Leif160519
出  处https://leif.fun/articles/2019/08/30/1567125582969.html
关于博主:坐标金陵古城,运维工程师,如有问题探讨可以直接下方留言。
声援博主:如果您觉得文章对您有帮助,可以评论、订阅、收藏。您的鼓励是博主的最大动力!

评论
  • 如果是备份docker容器中的数据,命令如下:

    /usr/bin/docker  exec solo_mysql /usr/bin/mysqldump -u root -p123456 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers --databases solo > ${backup_dir}/${date}/solo.sql
    

    exec后面不需要加-it,否则备份文件为空

    Reply