之前由于需要用到Mysql的自动数据库脚本备份,网上查了一些资料,但是资料基本不全,或者是脚本有问题。现自己总结一下MySQL的定时备份脚本的过程
依赖工具
主要依赖Crontab、vixie-cron以及dos2unix(脚本在windows下编写,需要转换成unix的编码,否则运行报错),一下简述安装过程
Crontab和vixie-cron
yum -y install vixie-cron
yum -y install crontabs
dos2unix
yum -y install dos2unix*
定时备份脚本
#!/bin/bash
#保留备份个数,会删除时间较早的.dump备份
number=3
#设置备份保存路径,yourpath替换成自己的备份保存路径
backup_dir=yourpath
#日期格式
dd=`date +%Y%m%d`
#备份工具
tool=mysqldump
#数据库用户名
username=root
#数据库密码,由于密码可能包含特殊字符,需要用''转义
password='yourpwd'
#将要备份的数据库名称,yourdb替换成自己要备份的数据库名,此脚本只支持备份一个数据库,多数据库mysqldump用法
database_name=yourdb
$tool -u $username -p$password --databases $database_name > $backup_dir/$database_name-$dd.dump
#写创建备份日志
echo "create $backup_dir/$database_name-$dd.dump" >> $backup_dir/log.txt
#查询本目录下所有备份文件
#查询备份文件是按照备份文件的生成时间来计算的
FileNum=$(ls -l $backup_dir/*.dump | grep ^- | wc -l)
echo "Number of backup files:"$FileNum >> $backup_dir/log.txt
while(( $FileNum > $number ))
do
#取最旧的文件,*.*可以改为指定文件类型
OldFile=$(ls -rt $backup_dir/*.dump | head -1)
echo "Delete File:"$backup_dir'/'$OldFile >> $backup_dir/log.txt
rm -f $OldFile
let "FileNum--"
done
备份脚本运行
脚本编码转换
cd /yourpath
dos2unix yoursh
如果脚本本身是在Linux下编写的则不需要进行转换,但是如果脚本是在windows下编写的,则需要转换。
Cront配置
基本操作命令
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看crontab服务状态
crontab -l //查看已经存在的配置
crontab -e //修改crontab的配置
将crond加入开机自启,防止重启后任务丢失
chkconfig –level 35 crond on
修改crontab的配置,配置如下
30 4 * * * /root/back/back.sh
以上示例的含义为每天4点半执行备份文件,具体时间参数问题详见百度,此处就不再赘述了。