mysql全庫(kù)備份/增量備份腳本

http://hongge.blog.51cto.com/

目前創(chuàng)新互聯(lián)建站已為超過(guò)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁(yè)空間、綿陽(yáng)服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計(jì)、尼木網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。

生產(chǎn)環(huán)境中MySQL數(shù)據(jù)庫(kù)的備份是周期性重復(fù)的操作,所以通常是要編寫腳本實(shí)現(xiàn),通過(guò)crond計(jì)劃任務(wù)周期性執(zhí)行備份腳本

mysqldump備份方案:

周日凌晨1點(diǎn)全庫(kù)備份

周一到周六凌晨每隔4個(gè)小時(shí)增量備份一次

設(shè)置crontab任務(wù),每天執(zhí)行備份腳本

# crontab –e

#每個(gè)星期日凌晨1:00執(zhí)行完全備份腳本

0 1 * * 0 /root/mysqlfullbackup.sh >/dev/null 2>&1

#周一到周六每隔4個(gè)小時(shí)增量備份一次

0 */4 * * 1-6 /root/mysqldailybackup.sh >/dev/null 2>&1

mysqlfullbackup.sh腳本內(nèi)容:

[root@localhost ~]# cat mysqlfullbackup.sh

#!/bin/sh

# Name:mysqlFullBackup.sh

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

mysqlDir=/usr/local/mysql

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

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備份數(shù)據(jù)庫(kù),請(qǐng)根據(jù)具體情況設(shè)置參數(shù)

$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

# 發(fā)送郵件通知

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

mysqldailybackup.sh腳本內(nèi)容:

[root@localhost ~]# cat mysqldailybackup.sh

#!/bin/sh

# Name:mysqlDailyBackup.sh

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

mysqldir=/usr/local/mysql

datadir=$mysqldir/data

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

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

#

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

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

cd $datadir

# 得到二進(jìn)制日志列表

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`

# 跳過(guò)最后一個(gè)二進(jìn)制日志(數(shù)據(jù)庫(kù)當(dāng)前使用的二進(jìn)制日志文件)

if [ $nextnum -eq $icounter ]; then

echo "Skip lastest!" > /dev/null

else

dest=$dailybackupdir/$binlogname

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

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

# 發(fā)送郵件通知

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

# 寫日志文件

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

cat $emailfile >> $logfile

http://hongge.blog.51cto.com/

網(wǎng)頁(yè)題目:mysql全庫(kù)備份/增量備份腳本
分享URL:http://bm7419.com/article36/pscosg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機(jī)、網(wǎng)站內(nèi)鏈、網(wǎng)站設(shè)計(jì)網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站營(yíng)銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)