linux 下mysql自动备份
前不久要在linux下每天自动备份mysql数据库。
版本
Linux: redhat enterprise linux 5
mysql: 5.1
在网上找了找,要写个shell命令执行mysqldump然后保存文件
1. 创建shell脚本文件
filename=`date +%Y%m%d_%H:%M`
mysqldump --opt database -u username -h host -ppassword | gzip > /var/mysqlbackup/$filename.gz
然后把该文件放到/etc/cron.daily/(每天执行目录)
/etc/cron.hourly/ (每小时)
/etc/cron.monthly/ (每月)
/etc/cron.weekly/ (每周)
然后在编辑/etc/crontab文件,改变/etc/cron.daily前面的时间参数(默认为4点)
前面的时间格式为“M H D m d cmd”。其中,M代表分钟(0~59),H代表小时(0~23),D代表天(1~31),m代表月(1~12),d代表一星期内的天(0~6,0为星期天)。*表示任何.例如01 * * * * 表示每小时的01分执行
如果不是redhat要编辑/etc/crontab文件
gedit /etc/crontab
gedit /etc/crontab
在最后加入
01 5 * * * root /opt/autobackup(上面shell脚本文件)
每天5点运行脚本,也可以修改5为其他指定时间
2. 为脚本增加权限
# chmod +x /opt/autobackup(面shell脚本文件)
# chmod +x /opt/autobackup(面shell脚本文件)
3. 重启crontab
# /etc/rc.d/init.d/crond restart
# /etc/rc.d/init.d/crond restart
到这为止看似OK挺easy可是执行后也没有报错
发现/var/mysqlbackup/(备份目录)下有一个叫..%Y%m%d_%H:%M.gz的文件
看样是日期文件名没有生效。最后又搞了半天,也查了半天就是不知道怎么回事
最后问了一个朋友他让我把shell脚本发过去,过了一会。才知道是因为
filename=`date +%Y%m%d_%H:%M`
这个" ' "应该是Tab键上的那点,而我打的是单引号。
作者:javadonkey