linux下的MySQL自动备份数据库脚本

之前由于需要用到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点半执行备份文件,具体时间参数问题详见百度,此处就不再赘述了。




你可能感兴趣的:(运维)