溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MySQL數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)Percona全量增量備份與恢復(fù)

發(fā)布時(shí)間:2020-06-03 17:22:11 來(lái)源:網(wǎng)絡(luò) 閱讀:399 作者:三月 欄目:MySQL數(shù)據(jù)庫(kù)

本文主要給大家簡(jiǎn)單講講MySQL數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)Percona全量增量備份與恢復(fù),相關(guān)專業(yè)術(shù)語(yǔ)大家可以上網(wǎng)查查或者找一些相關(guān)書籍補(bǔ)充一下,這里就不涉獵了,我們就直奔主題吧,希望MySQL數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)Percona全量增量備份與恢復(fù)這篇文章可以給大家?guī)?lái)一些實(shí)際幫助。

    Percona的innobackupex具有如下特點(diǎn):

        (1)備份過(guò)程快速、可靠;

        (2)備份過(guò)程不會(huì)打斷正在執(zhí)行的事務(wù);

        (3)能夠基于壓縮等功能節(jié)約磁盤空間和流量;

        (4)自動(dòng)實(shí)現(xiàn)備份檢驗(yàn);

        (5)還原速度快。

    本文結(jié)合計(jì)劃任務(wù)和腳本,使用Percona的innobackupex命令實(shí)現(xiàn)如下備份策略:

        (1)每周一23點(diǎn)對(duì)數(shù)據(jù)庫(kù)做完全備份,腳本名稱為allbbsdbbak.sh。
        (2)每周的周二至周日23:30對(duì)數(shù)據(jù)庫(kù)做增量備份,腳本名稱為newbbsdbdata.sh。

二、命令介紹:

    1、原理:備份開始時(shí)首先會(huì)開啟一個(gè)后臺(tái)檢測(cè)進(jìn)程,實(shí)時(shí)檢測(cè)mysql redo的變化,一旦發(fā)現(xiàn)有新的日志寫入,立刻將日志記入后臺(tái)日志文件xtraback_log中,之后復(fù)制InnoDB的數(shù)據(jù)文件(系統(tǒng)表空間文件ibdatax),復(fù)制結(jié)束后執(zhí)行flush tables with readlock,然后復(fù)制.fri、.MYI、.MYD等文件,最后執(zhí)行unlock tables并停止xtrabackup_log.

    2、依賴軟件:

       使用percona軟件的innobackupex命令,需要安裝perl-DBD-mysql、perl-Digest-MD5、libev、percona-xtrabackup四個(gè)軟件包。

    3、命令格式:

        innobackupex命令的參數(shù)非常多,用于數(shù)據(jù)備份的常用參數(shù)格式如下(具體參數(shù)可參考幫助信息或者這篇文章:https://www.cnblogs.com/waynechou/p/xtrabackup_backup.html):

            # innobackupex [--user=NAME] [--password=WORD] [--port=PORT] [--no-timestamp] [--databases=LIST] /backupdir

                --user            備份使用的用戶名
                --password        備份用戶的密碼

                --port            如果是3306可以不用寫

                --no-timestamp    不用日期命名備份文件存儲(chǔ)的子目錄名
                --database        "庫(kù)名"-單個(gè)庫(kù),"庫(kù)1 庫(kù)2"-多個(gè)庫(kù),"庫(kù).表"-單個(gè)表
    4、恢復(fù):
        (1)rm -rf /var/lib/mysql
            mkdir /var/lib/mysql
        (2)恢復(fù)日志    
            # innobackupex --user root --password 123456 --databases "mysql sys performance_schema db1" --apply-log /allback
        (3)恢復(fù)數(shù)據(jù)
             # innobackupex --user root --password 123456 --databases "mysql sys performance_schema db1" --copy-back /allback
        (4)chown -R mysql:mysql /var/lib/mysql
        (5)重起數(shù)據(jù)庫(kù)服務(wù)
            systemctl restart mysqld
        (6)登錄恢復(fù)后的數(shù)據(jù)庫(kù)
            # mysql -uroot -p123456
    5、增量備份:
        #innobackupex --user root --password 123456 --databases="系統(tǒng)庫(kù)列表 儲(chǔ)存數(shù)據(jù)庫(kù)" --incremental 目錄名 --incremental-basedir=目錄名 --no-timestamp
            --incremental 目錄名             //增量備份的目錄,在備份的時(shí)候自動(dòng)創(chuàng)建,如果提前創(chuàng)建好則需要該目錄下面為空
            --incremental-basedir=目錄名        //上一次備份的目錄
    6、增量恢復(fù):
       #innobackupex --user root --password 123456 --databases="系統(tǒng)庫(kù)列表 儲(chǔ)存數(shù)據(jù)庫(kù)" --incremental-dir=目錄名 --no-timestamp
            --incremental-dir=目錄名        //用于增量恢復(fù)的備份數(shù)據(jù)目錄    
            --redo-only                //
        (1)rm -rf /var/lib/mysql
            mkdir /var/lib/mysql
        (2)恢復(fù)日志文件
            # innobackupex --user root --password 123456 --apply-log --redo-only /allback
            # innobackupex --user root --password 123456 --apply-log --redo-only /allback --incremental-dir=/new1
            # innobackupex --user root --password 123456 --apply-log --redo-only /allback --incremental-dir=/new2
        (3)恢復(fù)數(shù)據(jù)
            # innobackupex --user root --password 123456 --copy-back /allback
        (4)chown -R mysql:mysql /var/lib/mysql
        (5)重起數(shù)據(jù)庫(kù)服務(wù)
            systemctl restart mysqld
        (6)登錄恢復(fù)后的數(shù)據(jù)庫(kù)
            # mysql -uroot -p123456

            注意:(1)innobackupex恢復(fù)數(shù)據(jù)的時(shí)候要求/var/lib/mysql目錄下面為空的,因此一般要把三個(gè)系統(tǒng)庫(kù)(mysql、sys、perfomance_schema)都要備份上。
                  (2)/allbak目錄可以在備份的時(shí)候自動(dòng)創(chuàng)建,如果提前創(chuàng)建好則需要該目錄下面為空
                  (3)此命令只能實(shí)現(xiàn)使用InnoDB引擎庫(kù)的增量備份,其他的存儲(chǔ)引擎的只能全量備份

三、備份腳本

    1、全量備份腳本

MySQL數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)Percona全量增量備份與恢復(fù)

    2、增量備份腳本

MySQL數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)Percona全量增量備份與恢復(fù)

 

MySQL數(shù)據(jù)庫(kù)如何實(shí)現(xiàn)Percona全量增量備份與恢復(fù)就先給大家講到這里,對(duì)于其它相關(guān)問(wèn)題大家想要了解的可以持續(xù)關(guān)注我們的行業(yè)資訊。我們的板塊內(nèi)容每天都會(huì)捕捉一些行業(yè)新聞及專業(yè)知識(shí)分享給大家的。

向AI問(wèn)一下細(xì)節(jié)

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

AI