linux crontab 备份 mysql

mysql 备份脚本:

--------------------------------------------------------------------------------脚本开始

#设置数据库名,密码,备份路径,日志路径,数据库文件闻之,以及备份方式
#默认的备份方式是tar ,还可以是mysqldump,mysqldoccopy
    #默认情况下,用root登录mysql数据库,备份至/root/dbxxxxx.tgz
    #!/bin/bash
#This is a ShellScript For Auto DB BackuP
#Powered BY xx
#Setting
DBName=mysql
DBUser=root
DBPasswd=888888
BackupPath=/home/xx/mysql
LogFile=/home/xx/mysql/mysql.log
DBPath=/var/lib/mysql/
#BackupMethod=mysqldump
#BackupMethod=mysqlhotcopy
#BackupMethod=tar
#setting end

NewFile="$BackupPath"db$(date +%y%m%d).tgz

DumpFile="$BackupPath"db$(date +%y%m%d)
OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz
echo "----------------------------------------" >>$LogFile
echo $(date +"%y-%m-%d %H:%M:%S")>>$LogFile
echo "----------------------------------------" >>$LogFile

#Delete Old File
if [ -f $OldFile ]
then
    rm -f $OldFile>>$LogFile 2>&1
    echo "[$OldFile] Delete Old File Success!">>$LogFile
else
    echo "[$OldFile] No Old File !">>$LogFile
fi

if [ -f $NewFile ]
then
    echo "[$NewFile] The Back File Is exists,Cann't Backup">>$LogFile
else
    case $BackupMethod in
    mysqldump)
        if [ -z $DBPasswd ]
        then
            mysqldump -u $DBUser --opt $DBName > $DumpFile
        else
            mysqldump -u $DBUser -p $DBPasswd -$DBName > $DumpFile
        fi
        tar czvf $NewFile $DumpFile >> $LogFile 2>&1
        echo "[$NewFile] Back up Success !" >> $LogFile
        rm -rf $DumpFile
        ;;
    mysqlhotcopy)
        rm -rf $DumpFIle
        mkdir $DumpFile
        if [ -z $DBPasswd ]
        then
            mysqlhotcopy -u $DBUser $DBName $DumpFIle >> $LogFile 2>&1
        else
            mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpDFile >> $LogFile 2>&1
        fi
        tar czvf $NewFile $DumpFile >> $LogFile 2>&1
        echo "[$NewFile] Back up Sucess !" >> $LogFile
        rm -rf $DUmpFile
        ;;
    *)
    /etc/init.d/mysqld stop > /dev/null 2>&1
    tar czvf $NewFile $DBPath$DBName >> $LogFile 2>&1
    /etc/init.d/mysqld start >dev/null 2>&1
    ;;
    esac
fi
echo "----------------------------------------" >> $LogFile

----------------------------------------------------------------------------------------------脚本结束----------------------------------------------------------------------------

 

crontab 定时计划任务添加(/etc/crontab)

00  22  *  *  *  root  /home/xx/mysql_backup.sh

 

备注:刚开始学习写脚本,shell 中 的if后的[]需要加上空格,导致开始调试了很久~

 

 

posted @ 2013-05-03 21:28  b13272012771  阅读(170)  评论(0编辑  收藏  举报