之前,有用户向我们提出过疑问:如何才能实现MySQL的自动备份,当时,我们的回复是编一个自动脚本。
现在我们把这段代码贴出来,希望对各位有所帮助。可以将这个脚本放进crontab,每天凌晨执行一次,自动备份。
这个脚本每天最多只执行一次,而且只保留最近五天的备份在服务器上。
代码:
现在我们把这段代码贴出来,希望对各位有所帮助。可以将这个脚本放进crontab,每天凌晨执行一次,自动备份。
这个脚本每天最多只执行一次,而且只保留最近五天的备份在服务器上。
代码:
<br/><br/>#!/bin/bash <br/>#This is a ShellScript For Auto DB Backup <br/>#Powered by aspbiz <br/>#2004-09 <br/><br/>#Setting <br/>#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式 <br/>#默认情况下备份方式是tar,还可以是mysqldump,mysqldotcopy <br/>#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz <br/>DBName=mysql <br/>DBUser=root <br/>DBPasswd= <br/>BackupPath=/root/ <br/>LogFile=/root/db.log <br/>DBPath=/var/lib/mysql/ <br/>#BackupMethod=mysqldump <br/>#BackupMethod=mysqlhotcopy <br/>#BackupMethod=tar <br/>#Setting End <br/><br/><br/>NewFile="$BackupPath"db$(date +%y%m%d).tgz <br/>DumpFile="$BackupPath"db$(date +%y%m%d) <br/>OldFile="$BackupPath"db$(date +%y%m%d --date='5 days ago').tgz <br/><br/>echo "-------------------------------------------" >> $LogFile <br/>echo $(date +"%y-%m-%d %H:%M:%S") >> $LogFile <br/>echo "--------------------------" >> $LogFile <br/>#Delete Old File <br/>if [ -f $OldFile ] <br/>then <br/> rm -f $OldFile >> $LogFile 2>&1 <br/> echo "[$OldFile]Delete Old File Success!" >> $LogFile <br/>else <br/> echo "[$OldFile]No Old Backup File!" >> $LogFile <br/>fi <br/><br/>if [ -f $NewFile ] <br/>then <br/> echo "[$NewFile]The Backup File is exists,Can't Backup!" >> $LogFile <br/>else <br/> case $BackupMethod in <br/> mysqldump) <br/> if [ -z $DBPasswd ] <br/> then <br/> mysqldump -u $DBUser --opt $DBName > $DumpFile <br/> else <br/> mysqldump -u $DBUser -p$DBPasswd --opt $DBName > $DumpFile <br/> fi <br/> tar czvf $NewFile $DumpFile >> $LogFile 2>&1 <br/> echo "[$NewFile]Backup Success!" >> $LogFile <br/> rm -rf $DumpFile <br/> ;; <br/> mysqlhotcopy) <br/> rm -rf $DumpFile <br/> mkdir $DumpFile <br/> if [ -z $DBPasswd ] <br/> then <br/> mysqlhotcopy -u $DBUser $DBName $DumpFile >> $LogFile 2>&1 <br/> else <br/> mysqlhotcopy -u $DBUser -p $DBPasswd $DBName $DumpFile >>$LogFile 2>&1 <br/> fi <br/> tar czvf $NewFile $DumpFile >> $LogFile 2>&1 <br/> echo "[$NewFile]Backup Success!" >> $LogFile <br/> rm -rf $DumpFile <br/> ;; <br/> *) <br/> /etc/init.d/mysqld stop >/dev/null 2>&1 <br/> tar czvf $NewFile $DBPath$DBName >> $LogFile 2>&1 <br/> /etc/init.d/mysqld start >/dev/null 2>&1 <br/> echo "[$NewFile]Backup Success!" >> $LogFile <br/> ;; <br/> esac <br/>fi <br/><br/>echo "-------------------------------------------" >> $LogFile <br/> <br/><br/>