首先先估算Mysql和网站各自需要的备份空间,然后定出来多少时间删除旧的备份文件。

1、创建保存备份文件的路径/mysqldata

#mkdir /mysqldata

2、创建/usr/sbin/bakmysql文件

#vi /usr/sbin/bakmysql

  

#注意:`符号是TAB键上面的符号,不是ENTER左边的

#还有date后要有一个空格。

rq=`date +%Y%m%d`

tar zcvf /mysqldata/mysql$rq.tar.gz /var/lib/mysql

#删除60天以前的备份文件

find /mysqldata -atime +60 -name '*.tar.gz'-exec rm -f {} ';'

或者写成

rq=` date +%Y%m%d `

mysqldump –all-databases -u root -p密码 > /mysqldata/mysql$rq.sql

rm -f `find -ctime 60` /mysqldata

/var/lib/mysql是你数据库文件的目录,部分用户是/usr/local/mysql/data,每个人可能不同

/mysqldata/表示保存备份文件的目录,这个每个人也可以根据自己的要求来做。

3、修改文件属性,使其可执行

# chmod +x /usr/sbin/bakmysql

4、修改/etc/crontab

#vi /etc/crontab

在下面添加

01 3 * * * root /usr/sbin/bakmysql

表示每天3点钟执行备份

02 * * * * root /usr/sbin/bakmysql

表示每周1,5:02执行备份

  

  

02 5 * * 1 root /usr/sbin/bakmysql

每小时第二分钟备份一次

5、重新启动crond

# /etc/rc.d/init.d/crond restart

完成。

这样每天你在/mysqldata可以看到这样的文件

mysql20070929.tar.gz

直接下载即可。

参考文章1:
http://hi.baidu.com/hfr6666/blog/item/f20b71039f15da8fd53f7c29.html
参考文章2:
http://www.linuxforum.net/forum/showflat.php?Board=newbie&Number=222620
参考文章3:
http://www.chinaunix.net/jh/4/277682.html

补充:一个朋友给我的建议
creating backups with rsync is more reliable, faster and
stores the backup at a separate disk on a different place.
I have daily, weekly and monthly backups with rsync to two fysical
different locations with command like:
rsync -r  rsync://*****.com/sqldata /backup/sqldata

可以参考:http://hi.baidu.com/52hack/blog/item/b7e9acc2a9d302130ff47737.html