MYSQL 定期备份是一项重要的工作,但人工操作太繁琐,也难避免有所疏漏,使用下面的方法即可让系统定期备份数据。
1 、创建备份文件夹
#cd /www
#makedir backup
2 、编写运行脚本
#vi autobackup
写入以下内容:
filename=’/bin/date +%Y%m%d’
mysql_bin_dir/mysqldump –opt dataname-u user-ppassword| gzip >/www/mysqlbackup/name$filename.gz
保存退出 ?
说明:
(1)mysql_bin_dir : mysql 的 bin 路径;
(2)dataname :数据库名;
(3)user :数据库用户名;
(4)password :用户密码;
(5)name :自定义备份文件前缀标识。
如上例,将自动备份 mysql 数据库,并以 gzip 压缩方式存储,文件名为 name20080101.gz 的形式。
3 、为脚本添加执行权限
#chmod +x autobackup
4 、让 crontab 来完成定期执行的任务
这一步中, Redhat 的方法会不一样,后面专门给出。
编辑 crontab :
#vi /etc/crontab
在最后一行中加入:
01 5* * * root /www/autobackup
每天 5 点运行脚本 , 也可以修改 5 为其他指定时间。
Redhat 方法:
Redhat 的 crontab 采用按时间调用 4 个目录( /etc/cron.hourly :每小时; /etc/cron.daily :每天; /etc/cron.weekly :每周; /etc/cron.monthly :每月)中脚本出来运行的方式。
Redhat 中只需要将刚才编辑的脚本复制到相应的目录即可。
5 、重启 crontab
#/etc/r c.d/init.d/crond restart
完成
其实原理很简单,自己制作一个脚本,让 Linux 系统自动运行。我们还可以再扩展一下,编辑一个自动备份网站文件的脚本,让 Linux 来完成,每天自动备份整个网站,等等 ……
1 、创建保存备份文件的路径/mysqldata
#mkdir /mysqldata
2 、创建/usr/sbin/bakmysql 文件
#nano /usr/sbin/bakmysql
输入:
#!/bin/sh
filename=’/bin/date +%Y%m%d’
mysqldump --all-databases -uroot -p 密码 > /shlar/mysqlbak/mysql.sql
注:--all-databases 为备份全部数据库到mysqlbak 下的mysql.sql 文件中,如果把--all-databases 替换为test ,则只备份test 数据库。
3 、修改文件属性,使其可执行
# chmod +x /usr/sbin/bakmysql
4 、修改/etc/crontab
#nano /etc/crontab
在下面添加:
01 3 * * * root /usr/sbin/bakmysql
表示每天3 点钟执行备份。
5 、重新启动crond
# /etc/init.d/cron restart
完成。