首页 > 数据库技术 > 详细

mysql自动备份脚本

时间:2017-04-16 23:21:16      阅读:293      评论:0      收藏:0      [点我收藏+]

mysqldailybackup.sh

#!/bin/sh
# Name:mysqlDailyBackup.sh
# 定义数据库目录和数据目录
mysqldir=/usr/local/mysql
datadir=$mysqldir/data
# 定义用于备份数据库的用户名和密码
user=root
userpwd=123456
# 定义备份目录,每日备份文件备份到$dataBackupDir/daily
databackupdir=/opt/mysqlbackup
dailybackupdir=$databackupdir/daily
[ ! -d $dailybackupdir ] && mkdir -p $databackupdir/daily
# 定义邮件正文文件
emailfile=$databackupdir/email.txt
# 定义邮件地址
email=root@localhost.localdomain
# 定义日志文件
logfile=$databackupdir/mysqlbackup.log
echo "" > $emailfile
echo $(date +"%y-%m-%d %H:%M:%S") >> $emailfile
#
# 刷新日志,使数据库使用新的二进制日志文件
$mysqldir/bin/mysqladmin -u$user -p$userpwd flush-logs
cd $datadir
# 得到二进制日志列表
filelist=`cat mysql-bin.index`
icounter=0
for file in $filelist
do
  icounter=`expr $icounter + 1`
done
nextnum=0
ifile=0
for file in $filelist
do
  binlogname=`basename $file`
  nextnum=`expr $nextnum + 1`
# 跳过最后一个二进制日志(数据库当前使用的二进制日志文件)
  if [ $nextnum -eq $icounter ]; then
    echo "Skip lastest!" > /dev/null
  else
    dest=$dailybackupdir/$binlogname
# 跳过已经备份的二进制日志文件
    if [ -e $dest ]; then
      echo "Skip exist $binlogname!" > /dev/null
    else
# 备份日志文件到备份目录
      cp $binlogname $dailybackupdir
      if [ $? -eq 0 ]; then
        ifile=`expr $ifile + 1`
        echo "$binlogname backup success!" >> $emailfile
      fi
    fi
  fi
done
if [ $ifile -eq 0 ];then
  echo "No Binlog Backup!" >> $emailfile
else
  echo "Backup $ifile File(s)." >> $emailfile
  echo "Backup MySQL Binlog OK!" >> $emailfile
fi
# 发送邮件通知
cat $emailfile | mail -s "MySQL Backup" $email
# 写日志文件
echo "--------------------------------------------------------" >> $logfile
cat $emailfile >> $logfile

mysql完整备份脚本:

#!/bin/sh
# Name:mysqlFullBackup.sh
# 定义数据库目录
mysqlDir=/usr/local/mysql
# 定义用于备份数据库的用户名和密码
user=root
userpwd=123456
dbname=test_db
# 定义备份目录
databackupdir=/opt/mysqlbackup
[ ! -d $databackupdir ] && mkdir $databackupdir
# 定义邮件正文文件
emailfile=$databackupdir/email.txt
# 定义邮件地址
email=root@localhost.localdomain
# 定义备份日志文件
logfile=$databackupdir/mysqlbackup.log
DATE=`date -I`

echo "" > $emailfile
echo $(date +"%y-%m-%d %H:%M:%S") >> $emailfile
cd $databackupdir
# 定义备份文件名
dumpfile=mysql_$DATE.sql
gzdumpfile=mysql_$DATE.sql.tar.gz

# 使用mysqldump备份数据库,请根据具体情况设置参数
$mysqlDir/bin/mysqldump -u$user -p$userpwd --flush-logs -x $dbname > $dumpfile

# 压缩备份文件
if [ $? -eq 0 ]; then
  tar czf $gzdumpfile $dumpfile >> $emailfile 2>&1
  echo "BackupFileName:$gzdumpfile" >> $emailfile
  echo "DataBase Backup Success!" >> $emailfile
  rm -f $dumpfile
else
  echo "DataBase Backup Fail!" >> $emailfile
fi
# 写日志文件
echo "--------------------------------------------------------" >> $logfile
cat $emailfile >> $logfile
# 发送邮件通知
cat $emailfile | mail -s "MySQL Backup" $email


本文出自 “清风与你” 博客,谢绝转载!

mysql自动备份脚本

原文:http://super12138.blog.51cto.com/12190541/1916437

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!