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