溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

利用腳本應該如何備份Mysql數(shù)據(jù)庫和binlog日志

發(fā)布時間:2020-06-03 15:34:51 來源:網(wǎng)絡 閱讀:249 作者:三月 欄目:數(shù)據(jù)庫

下面一起來了解下利用腳本應該如何備份Mysql數(shù)據(jù)庫和binlog日志,相信大家看完肯定會受益匪淺,文字在精不在多,希望利用腳本應該如何備份Mysql數(shù)據(jù)庫和binlog日志這篇短內(nèi)容是你想要的。

閑話少說,直接上腳本

首先是為mysql做指定庫文件的全庫備份

vim mysqlbak.sh

#!/bin/bash

#定義數(shù)據(jù)庫目錄,要能找到mysqldump

mysqlDir=/usr

#定義用于備份數(shù)據(jù)庫的用戶名和密碼

user=root

userpwd=123456

dbname=db1

#定義備份目錄

databackupdir=/mysqlbak

#定義郵件正文文件

emailfile=$databackupdir/email.txt

#定義郵件地址

email=www@163.com

#定義備份日志文件

logfile=$databackupdir/mysqlbackup.log

#DATE=`date +%Y%m%d`

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備份數(shù)據(jù)庫,--flush-logs 產(chǎn)生一個新日志

$mysqlDir/bin/mysqldump -u$user -p$userpwd --flush-logs -x $dbname > $dumpfile

#壓縮備份文件

if [ "$?" == 0 ];then

    #把備份出來的文件進行壓縮,壓縮的結果保存在郵件內(nèi)容中

   tar zcvf $gzdumpfile $dumpfile >> $emailfile 2>&1

   echo "BackupFileName: $gzdumpfile" >> $emailfile

   echo "DataBase Backup Success!" >> $emailfile

    #刪除壓縮前的sql文件

   rm -rf $dumpfile

else

   echo "Database Backup Fail!" >> $emailfile

fi

#寫日志文件

echo "-------------------------------------------------" >> $logfile

cat $emailfile >> $logfile

#發(fā)送郵件通知

cat $emailfile| mail -s "Mysql Backup" $email

以上腳本執(zhí)行后會在備份目錄中產(chǎn)生一個tar.gz的文件,此文件為全庫備份文件,備份成功后給指定的郵箱地址發(fā)送郵件,收件內(nèi)容為截圖內(nèi)容為備份成功!

利用腳本應該如何備份Mysql數(shù)據(jù)庫和binlog日志


接下來是binlog日志的備份腳本

vim binlogbak.sh

#!/bin/bash

#定義數(shù)據(jù)庫目錄和數(shù)據(jù)目錄

mysqldir=/usr/local/mysql

datadir=$mysqldir/binlog

#定義用于備份數(shù)據(jù)庫的用戶名和密碼

user=root

userpwd=123456

#定義備份目錄

databackupdir=/mysqlbak

logbackupdir=$databackupdir/logs

#定義郵件正文文件

emailfile=$databackupdir/email.txt

#定義郵件地址

email=www@163.com

#定義備份日志文件

logfile=$databackupdir/mysqlbackup.log

#DATE=`date +%Y%m%d`

echo "" > $emailfile 

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

#刷新日志,使數(shù)據(jù)庫使用新的二進制日志文件

/usr/bin/mysqladmin -u$user -p$userpwd flush-logs

cd $datadir

#得到二進制日志列表

filelist=`cat mysql_binlog.index`

icounter=0

for file in $filelist

do

    #需要注意的是符號和兩個操作項之間的空格畢不可少,下面也是一樣

  icounter=`expr $icounter + 1`

done

nextnum=0

ifile=0

for file in $filelist

do

binlogname=$file

nextnum=`expr $nextnum + 1`

#跳過最后一個二進制日志 (數(shù)據(jù)庫當前使用的二進制日志文件)

if [ $nextnum -eq $icounter ];then

   echo "Skip lastest!" > /dev/null

else

   dest=$logbackupdir/$binlogname

#跳過已經(jīng)備份的二進制日志文件

if [ -e $dest ];then

   echo "Skip exist $binlogname!" > /dev/null

else

#備份日志文件到備份目錄

cp $binlogname $logbackupdir

if [ "$?" == 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

#寫日志文件

echo "-------------------------------------------------" >> $logfile

cat $emailfile >> $logfile

#發(fā)送郵件通知

cat $emailfile| mail -s "Mysql Backup" $email

以上腳本執(zhí)行后會在備份目錄中產(chǎn)生多個沒備份過的binlog日志,文件每日是前一天的增量備份文件,備份成功后給指定的郵箱地址發(fā)送郵件,收件內(nèi)容為截圖內(nèi)容為備份成功!

利用腳本應該如何備份Mysql數(shù)據(jù)庫和binlog日志

編寫計劃任務自動執(zhí)行,每周1,3,24點全庫備份,每天夜里1點日志備份

crontab -e

0 00 * * 1,3 /mysqlbak.sh

0 1 * * * /binlogbak.sh

看完利用腳本應該如何備份Mysql數(shù)據(jù)庫和binlog日志這篇文章后,很多讀者朋友肯定會想要了解更多的相關內(nèi)容,如需獲取更多的行業(yè)信息,可以關注我們的行業(yè)資訊欄目。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI