注:本文操作环境为SuSE,其他版本操作系统大致相同,有差异的地方会单独指出。
mysql中存储数据的重要性不用多加强调,一旦数据丢失,造成的影响不可估量,手动转储数据库比较麻烦,因此,需要系统自动在某个时间点执行备份功能,主要过程如下:
1、创建存储运行脚本和数据库信息的目录(可根据个人需要建立),本文中是:
1 mkdir /home/seed/mysql_dump //存储脚本及数据信息 2 mkdir /home/seed/mysql_dump/mysql_data //存储数据库转储文件
2、编写自动存储脚本文件,在mysql_dump目录下输入命令vim mysql_back.sh,文件内容如下:
1 #!/bin/sh 2 # File: /home/seed/mysql_dump/mysql_back.sh 3 # Database info 4 DB_NAME="regdb" //数据库名称 5 DB_USER="regadmin" //数据库username 6 DB_PASS="regadmin" //数据库password 7 8 PATH="/home/seed/mysql_dump/mysql_data" 9 /usr/bin/mysqldump --opt -u$DB_USER -p$DB_PASS $DB_NAME\ 10 > $PATH/$DB_NAME.dump_`/bin/date +%Y%m%d_%H%M%S`.sql
注:date前面指定了全路径,否则我的linux会报找不到date错误。
3、给mysql_back.sh文件赋予可执行权限:
1 chmod 755 mysql_back.sh
4、修改crontab文件,使用crontab -e命令打开文件,加入下面一行:
1 0 23 * * * /home/seed/mysql_dump/mysql_back.sh //表示每天23点0分开始执行mysql_back.sh
0 23 * * * /home/tong/pds/mysql_dump/mysql_back.sh,前面指定五个参数,分别表示:
1 # Example of job definition: 2 # .---------------- minute (0 - 59) 3 # | .------------- hour (0 - 23) 4 # | | .---------- day of month (1 - 31) 5 # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... 6 # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat 7 # | | | | | 8 # * * * * * user-name command to be executed
注:不要vi /etc/crontab进行修改,因为可能由于输入语法错误,导致无法执行cron。
5、启动或者重启cron服务(系统默认是关闭该服务的):
1 root# service cron start //SuSE中是这样启动和重启,让我好找。。。 2 root# service cron restart 3 4 5 6 root# service crond start //其他系统是这样启动和重启,未验证,欢迎指出错误 7 root# service crond restart
6、OK,静待成功。
注:个人建议测试成功与否时,可把时间调整为可迅速查看的时间(如当前时间往后推延2分钟,强烈建议首先使用date查看系统当前时间),不用非等到夜里。(纯属娱乐)
可自行将cron服务加入到系统启动项中,否则,系统重启之后该服务会停止运行。