mysql如何全量備份和增量備份

本篇內(nèi)容主要講解“MySQL如何全量備份和增量備份”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“mysql如何全量備份和增量備份”吧!

創(chuàng)新互聯(lián)建站憑借專業(yè)的設(shè)計(jì)團(tuán)隊(duì)扎實(shí)的技術(shù)支持、優(yōu)質(zhì)高效的服務(wù)意識(shí)和豐厚的資源優(yōu)勢(shì),提供專業(yè)的網(wǎng)站策劃、成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站優(yōu)化、軟件開發(fā)、網(wǎng)站改版等服務(wù),在成都10多年的網(wǎng)站建設(shè)設(shè)計(jì)經(jīng)驗(yàn),為成都近1000家中小型企業(yè)策劃設(shè)計(jì)了網(wǎng)站。

mysql 全量備份:

vim /root/mysql_bakup.sh

 
#!/bin/bash
#Date:2017/5/2
#Author:wangpengtai
#Blog:http://wangpengtai.blog.51cto.com
#At Sunday, we will backup the completed databases and the incresed binary log during Saturday to Sunday.
#In other weekdays, we only backup the increaing binary log at that day!
################################
#the globle variables for MySQL#
################################
DB_USER='root'
DB_PASSWORD='123456'
DB_PORT='3306'
BACKUPDIR='/tmp/mysqlbakup'
BACKUPDIR_OLDER='/tmp/mysqlbakup_older'
DB_PID='/data/mysql/log/mysqld.pid'
DB_SOCK='/data/mysql/log/mysql.sock'
LOG_DIR='/data/mysql/log'
BACKUP_LOG='/tmp/mysqlbakup/backup.log'
DB_BIN='/usr/local/mysql/bin'
#time variables for completed backup
FULL_BAKDAY='Sunday'
TODAY=`date +%A`
DATE=`date +%Y%m%d`
###########################
#time variables for binlog#
###########################
#liftcycle for saving binlog
DELETE_OLDLOG_TIME=$(date "-d 14 day ago" +%Y%m%d%H%M%S)
#The start time point to backup binlog, the usage of mysqlbinlog is --start-datetime, --stop-datetime, time format is %Y%m%d%H%M%S, eg:20170502171054, time zones is  [start-datetime, stop-datetime)
#The date to start backup binlog is yesterday at this very moment!
START_BACKUPBINLOG_TIMEPOINT=$(date "-d 1 day ago" +"%Y-%m-%d %H:%M:%S")
 
#BINLOG_LIST=`cat /data/mysql/log/mysql-bin.index`
BINLOG_INDEX='/data/mysql/log/mysql-bin.index'
##############################################
#Judge the mysql process is running or not.  #
#mysql stop return 1, mysql running return 0.#
##############################################
function DB_RUN(){
    if test -a $DB_PID && test -a $DB_SOCK;then
        return 0
    else
        return 1
    fi
}
###################################################################################################
#Judge the bacup directory is exsit not.                                                          #
#If the mysqlbakup directory was exsited, there willed return 0.                                  #
# If there is no a mysqlbakup directory, the fuction will create the directory and return value 1.#
###################################################################################################
function BACKDIR_EXSIT(){
    if test -d $BACKUPDIR;then
#        echo "$BACKUPDIR was exist."
        return 0
    else
        echo "$BACKUPDIR is not exist, now create it."
        mkdir -pv $BACKUPDIR
        return 1
    fi
}
###################################################################################################
#Judge the binlog is configed or not.                                                          #
#If the mysqlbakup directory was exsited, there willed return 0.                                  #
# If there is no a mysqlbakup directory, the fuction will create the directory and return value 1.#
###################################################################################################
function BINLOG_EXSIT(){
    if test -f $BINLOG_INDEX;then
#        echo "$BACKUPDIR was exist."
        return 0
    fi
}
###################################################
#The full backup for all Databases                #
#This function is use to backup the all databases.#
###################################################
function FULL_BAKUP(){
    echo "At `date +%D\ %T`: Starting full backup the MySQL DB ... "
#    rm -fr $BACKUPDIR/db_fullbak_$DATE.sql  #for test !!
    $DB_BIN/mysqldump --lock-all-tables --flush-logs --master-data=2 -u$DB_USER -p$DB_PASSWORD -P$DB_PORT -A |gzip > $BACKUPDIR/db_fullbak_$DATE.sql.gz
    FULL_HEALTH=`echo $?`
    if [[ $FULL_HEALTH == 0 ]];then
        echo "At `date +%D\ %T`: MySQL DB incresed backup successfully"
    else
        echo "MySQL DB full backup failed!"
    fi
}
#python
# >>> with open('/data/mysql/log/mysql-bin.index','r') as obj:
# ...    for i in obj:
# ...       print os.path.basename(i)
# ...
# mysql-bin.000006
# mysql-bin.000007
# mysql-bin.000008
# mysql-bin.000009
function INCREASE_BAKUP(){
    echo "At `date +%D\ %T`: Starting increased backup the MySQL DB ... "
    $DB_BIN/mysqladmin -u$DB_USER -p$DB_PASSWORD -P$DB_PORT flush-logs
    $DB_BIN/mysql -u$DB_USER -p$DB_PASSWORD -P$DB_PORT -e "purge master logs before ${DELETE_OLDLOG_TIME}"
    for in `cat $BINLOG_INDEX`
    do
        $DB_BIN/mysqlbinlog -u$DB_USER -p$DB_PASSWORD -P$DB_PORT --start-datetime="$START_BACKUPBINLOG_TIMEPOINT" $i |gzip >> $BACKUPDIR/db_daily_$DATE.sql.gz
    done
    # $DB_BIN/mysqlbinlog -u$DB_USER -p$DB_PASSWORD -P$DB_PORT --start-datetime="$START_BACKUPBINLOG_TIME" $LOG_DIR/mysql-bin.[0-9]* |gzip >> $BACKUPDIR/db_daily_$DATE.sql.gz
    INCREASE_HEALTH=`echo $?`
    if [[ $INCREASE_HEALTH == 0 ]];then
        echo "At `date +%D\ %T`: MySQL DB incresed backup successfully"
    else
        echo "MySQL DB incresed backup failed!"
    fi
}
function OLDER_BACKDIR_EXSIT(){
    if test -d $BACKUPDIR_OLDER;then
#        echo "$BACKUPDIR_OLDER was exist."
        return 0
    else
        echo "$BACKUPDIR_OLDER is not exist, now create it."
        mkdir -pv $BACKUPDIR_OLDER
#        return 1
    fi
}
function BAKUP_CLEANER(){
    #move the backuped file that created time out of 7 days to the BACKUPDIR_OLDER directory
    returnkey=`find $BACKUPDIR -name "*.sql.gz" -mtime +7 -exec ls -lh {} \;`
    returnkey_old=`find $BACKUPDIR_OLDER -name "*.sql.gz" -mtime +14 -exec ls -lh {} \;`
    if [[ $returnkey != '' ]];then
 
        echo "----------------------"
        echo "Moving the older backuped file out of 7 days to $BACKUPDIR_OLDER."
        echo "The moved file list is:"
        find $BACKUPDIR -name "*.sql.gz" -mtime +7 -exec mv {} $BACKUPDIR_OLDER \;
        echo "-----------------------"
    elif [[ $returnkey_old != '' ]];then
        #delete the backuped file that created time out of 14 days from BACKUPDIR_OLDER directory.
        echo "Delete the older backuped file out of 14 days from $BACKUPDIR_OLDER."
        echo "The deleted files list is:"
        find $BACKUPDIR_OLDER -name "*.sql.gz" -mtime +14 -exec rm -fr {} \;
    fi
}
####################################
#--------------main----------------#
####################################
function MAIN(){
    DB_RUN #Judge the process is run or not, if not run, the script will not bakup db
    Run_process=`echo $?`
    echo $?
    if [[ $Run_process == 0 ]];then
        BINLOG_EXSIT
        binlog_index=`echo $?`
        if [[ $binlog_index == 0 ]];then
            echo "**********START**********"
            echo $(date +"%y-%m-%d %H:%M:%S %A")
            echo "~~~~~~~~~~~~~~~~~~~~~~~"
            if [[ $TODAY == $FULL_BAKDAY ]];then
                echo "Start completed bakup ..."
                INCREASE_BAKUP
                FULL_BAKUP    #full backup to all DB
                BAKUP_CLEANER
            else
                echo "Start increaing bakup ..."
                INCREASE_BAKUP
            fi
            echo "~~~~~~~~~~~~~~~~~~~~~~~"
            echo $(date +"%y-%m-%d %H:%M:%S %A")
            echo "**********END**********"
        else
            echo "**********START**********"
            echo $(date +"%y-%m-%d %H:%M:%S %A")
            echo "~~~~~~~~~~~~~~~~~~~~~~~"
            echo "Sorry, MySQL binlog was not configed, please config the my.cnf firstly!"
            echo "~~~~~~~~~~~~~~~~~~~~~~~"
            echo $(date +"%y-%m-%d %H:%M:%S %A")
            echo "**********END**********"
        fi
    else
        echo "**********START**********"
        echo $(date +"%y-%m-%d %H:%M:%S %A")
        echo "~~~~~~~~~~~~~~~~~~~~~~~"
        echo "Sorry, MySQL was not running, the db could not be backuped!"
        echo "~~~~~~~~~~~~~~~~~~~~~~~"
        echo $(date +"%y-%m-%d %H:%M:%S %A")
        echo "**********END**********"
    fi
}
#starting runing
 
BACKDIR_EXSIT $BACKUP_LOG
OLDER_BACKDIR_EXSIT $BACKUP_LOG

MAIN >> $BACKUP_LOG

到此,相信大家對(duì)“mysql如何全量備份和增量備份”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

當(dāng)前題目:mysql如何全量備份和增量備份
路徑分享:http://muchs.cn/article34/gdecpe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供面包屑導(dǎo)航網(wǎng)站改版、品牌網(wǎng)站建設(shè)、Google手機(jī)網(wǎng)站建設(shè)、網(wǎ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)站優(yōu)化排名