1、创建备份目录(就是备份的文件放在哪里已经shell脚本)
(shell脚本我放在这里)
mkdir /home/bak_sh
mkdir /home/mysqlbackup
2、创建备份Shell脚本:
cd /home/bak_sh
vi mysqlbck.sh
输入:
backupdir=/home/mysqlbackup
time=_`date +%Y_%m_%d_%H_%M_%S`
db_name=test
db_user=root
db_pass=123456
mysqldump -u $db_user -p$db_pass --extended-insert=false $db_name | gzip > $backupdir/$db_name$time.sql.gz
find $backupdir -name $db_name"*.sql.gz" -type f -mtime +91 -exec rm -rf {} \; > /dev/null 2>&1
说明:
backupdir :备份文件要放的目录
time : 时间,文件名用到
db_name :要备份的数据库名
db_user:数据库用户名
db_pass :数据库用户密码
备份语句(备份并进行压缩):
mysqldump -u $db_user -p$db_pass --extended-insert=false $db_name | gzip > $backupdir/$db_name$time.sql.gz
删除超过3个月的所有备份数据(即删除3个月之前的备份,保留3个月内的备份,这个规则根据需求随意定);
find $backupdir -name $db_name"*.sql.gz" -type f -mtime +91 -exec rm -rf {} \; > /dev/null 2>&1
保存退出!(先按一下键盘上的 " esc " 然后输入 “:wq ” 表示保存)
3、添加可执行权限
chmod +x /home/bak_sh/mysqlbck.sh
(执行mysqlbck.sh测试备份脚本是否可用,如果可用,执行后会在/home/mysqlbackup目录下生成备份好的压缩文件,为确保备份内容正确,可查看压缩文件的内容是否是我们需要的)
4、添加计划任务(修改/etc/crontab)
crontab -e
这时就像使用vi编辑器一样,可以对计划任务进行编辑
或者直接编辑 /etc/crontab
输入以下内容并保存:
(表示:每天凌晨3点以root权限开始执行mysqlbck.sh脚本)
cron时间的格式是
分 时 日 月 周
保存退出!
5、重新启动crond
/etc/rc.d/init.d/crond restart
或者:
service crond restart
6、查看任务执行日志
# tail -f /var/log/cron
7、系统崩溃,重建系统时,可以这样恢复数据:
先解压压缩的备份文件
#mysql -u username -ppassword test< test_2016_12_07_09_54_34.sql.gz
从压缩文件直接恢复:
#gzip < test_2016_12_07_09_54_34.sql.gz | mysql -u username -ppassword test