博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个Mysql自动备份脚本
阅读量:7197 次
发布时间:2019-06-29

本文共 1955 字,大约阅读时间需要 6 分钟。

#!/bin/bash 

#This is a ShellScript For Auto DB Backup 
#Powered by aspbiz 
#2004-09

#Setting 

#设置数据库名,数据库登录名,密码,备份路径,日志路径,数据文件位置,以及备份方式 
#默认情况下备份方式是tar,还可以是mysqldump,mysqldotcopy 
#默认情况下,用root(空)登录mysql数据库,备份至/root/dbxxxxx.tgz 
DBName=mysql 
DBUser=root 
DBPasswd= 
BackupPath=/root/ 
LogFile=/root/db.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 Backup File!" >;>; $LogFile 
fi

if [ -f $NewFile ] 

then 
   echo "[$NewFile]The Backup File is exists,Can't Backup!" >;>; $LogFile 
else 
   case $BackupMethod in 
   mysqldump) 
      if [ -z $DBPasswd ] 
      then 
         mysqldump -u $DBUser --opt $DBName >; $DumpFile 
      else 
         mysqldump -u $DBUser -p$DBPasswd --opt $DBName >; $DumpFile 
      fi 
      tar czvf $NewFile $DumpFile >;>; $LogFile 2>;&1 
      echo "[$NewFile]Backup 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 $DumpFile >;>;$LogFile 2>;&1 
      fi 
      tar czvf $NewFile $DumpFile >;>; $LogFile 2>;&1 
      echo "[$NewFile]Backup Success!" >;>; $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 
      echo "[$NewFile]Backup Success!" >;>; $LogFile 
      ;; 
   esac 
fi

echo "-------------------------------------------" >;>; $LogFile

      本文转自glying 51CTO博客,原文链接:http://blog.51cto.com/liying/968452,如需转载请自行联系原作者

你可能感兴趣的文章