Linux系统下mysql自动备份脚本编写策略

    作者:课课家教育更新于: 2016-03-14 18:50:57

      在Linux系统下如何进行数据库的备份呢?linux系统下的MySQL数据库有关于自动备份的代码脚本,那么该怎样进行数据库自动备份的脚本编写呢?

    Linux系统下mysql自动备份脚本编写策略_数据库备份_Linux脚本_课课家

      MySQL:Linux下自动备份数据库的shell脚本

      Linux服务器上的程序每天都在更新MySQL数据库,于是就想起写一个shell脚本,结合crontab,定时备份数据库。其实非常简单,主要就是使用MySQL自带的mysqldump命令。

      脚本内容如下:

      ----------------------------------------------------------------------start

      #!/bin/sh

      #File:/home/mysql/backup.sh

      #Databaseinfo

      DB_NAME="test"

      DB_USER="username"

      DB_PASS="password"

      #Othersvars

      BIN_DIR="/usr/local/mysql/bin"

      BCK_DIR="/home/mysql/backup"

      DATE=`date+%F`

      #TODO

      $BIN_DIR/mysqldump--opt-u$DB_USER-p$DB_PASS$DB_NAME|gzip>$BCK_DIR/db_$DATE.gz

      -----------------------------------------------------------------------------end

      然后使用将此脚本加到/etc/crontab定时任务中:

      015**0mysql/home/mysql/backup.sh

      好了,每周日凌晨5:01系统就会自动运行backup.sh文件备份MySQL数据库了。

      可以将这个脚本放进crontab,每天凌晨执行一次,自动备份

      这个脚本每天最多只执行一次,而且只保留最近五天的备份在服务器上。

      第二个方法:

      注意:

      DumpFile=db$(date+%y%m%d)如果设置为这样一定要将此脚本放备份目录下才行。

      DumpFile="$BackupPath"db$(date+%y%m%d)如果设置为这样,日志中会有这样的提示tar:Removingleading`/'frommembernames是因为备份的目录使用的是绝对路径,不过这样不影响数据,可以根据自己习惯而定。

      -------------------------------------------------------------------start

      #!/bin/bash

      #ThisisaShellScriptForAutoDBBackup

      #Poweredbyaspbiz

      #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

      #SettingEnd

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

      DumpFile="$BackupPath"db$(date+%y%m%d)

      OldFile="$BackupPath"db$(date+%y%m%d--date='5daysago').tgz

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

      echo$(date+"%y-%m-%d%H:%M:%S")>>$LogFile

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

      #DeleteOldFile

      if[-f$OldFile]

      then

      rm-f$OldFile>>$LogFile2>&1

      echo"[$OldFile]DeleteOldFileSuccess!">>$LogFile

      else

      echo"[$OldFile]NoOldBackupFile!">>$LogFile

      fi

      if[-f$NewFile]

      then

      echo"[$NewFile]TheBackupFileisexists,Can'tBackup!">>$LogFile

      else

      case$BackupMethodin

      mysqldump)

      if[-z$DBPasswd]

      then

      mysqldump-u$DBUser--opt$DBName>$DumpFile

      else

      mysqldump-u$DBUser-p$DBPasswd--opt$DBName>$DumpFile

      fi

      tarczvf$NewFile$DumpFile>>$LogFile2>&1

      echo"[$NewFile]BackupSuccess!">>$LogFile

      rm-rf$DumpFile

      ;;

      mysqlhotcopy)

      rm-rf$DumpFile

      mkdir$DumpFile

      if[-z$DBPasswd]

      then

      mysqlhotcopy-u$DBUser$DBName$DumpFile>>$LogFile2>&1

      else

      mysqlhotcopy-u$DBUser-p$DBPasswd$DBName$DumpFile>>$LogFile2>&1

      fi

      tarczvf$NewFile$DumpFile>>$LogFile2>&1

      echo"[$NewFile]BackupSuccess!">>$LogFile

      rm-rf$DumpFile

      ;;

      *)

      /etc/init.d/mysqldstop>/dev/null2>&1

      tarczvf$NewFile$DBPath$DBName>>$LogFile2>&1

      /etc/init.d/mysqldstart>/dev/null2>&1

      echo"[$NewFile]BackupSuccess!">>$LogFile

      ;;

      esac

      fi

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

      ---------------------------------------------------------------------------------------------end

课课家教育

未登录