您当前的位置:首页 > 分类 > 技术资讯 > LINUX > 正文

crontab执行mysql定时备份文件为空

发布时间:2016-12-27 10:40:00      来源:51推一把
【摘要】linux定时备份mysql数据库,crontab执行时生成数据库文件为空
一、用命令实现mysql备份

1、备份数据
#mysqldump -uusername -ppassword dbname >/data/www/backup/dbname_2016-12-12.sql
-uusernae:-u+mysql的用户名
-ppassword:-u+mysql的密码
dbname:数据库名
这样就把dbname数据库所有的表结构和数据备份到dbname_2016-12-12.sql里了,可自定义目录。

如果数据量大会占用很大空间,这时可以利用gzip压缩数据,命令如下:
#mysqldump -uusername -ppassword dbname | gzip >/data/www/backup/dbname_2016-12-12.sql.gz

系统崩溃,重建系统时,可以这样恢复数据:
#mysql -uusername -ppassword dbname
从压缩文件直接恢复:
#gzip < /data/www/backup/dbname_2016-12-12.sql.gz | mysql -uusername-ppassword dbname

二、利用crontab,系统每天定时备份mysql数据库

1.创建可执行文件/mysqlbak/dbname_backup.sh
#!/bin/bash
/usr/local/mysql/bin/mysqldump -uusername -ppassword dbname| gzip > /data/www/backup/dbname_$(date +%Y%m%d_%H%M%S).sql.gz

注意:mysqldump 要为绝对路径

2、修改文件属性,使其可以执行
#chmod +x /mysqlbak/dbname_backup.sh

3、使用命令crontab -e
01 3 * * * /mysqlbak/dbname_backup.sh  #每天3:01执行

PS:遇到的问题
如果直接执行/mysqlbak/dbname_backup.sh,可以正常备份。
crontab定时执行生成的备份文件就为空了
原因:
可执行文件dbname_backup.sh中mysqldump的命令没有写绝对路径导致的,crontab执行时找不到mysqldump的命令了。

查看mysqldump目录

#find / -name mysqldump
#which mysqldump #查看命令绝对路径