下载安卓APP箭头
箭头给我发消息

客服QQ:3315713922

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

作者:课课家教育     来源: http://www.kokojia.com点击数:1432发布时间: 2016-03-15 08:00:49

标签: mysql自动备份数据库备份Linux脚本

  在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

赞(19)
踩(0)
分享到:
华为认证网络工程师 HCIE直播课视频教程