Mysql數據庫備份與恢復--Xtrabackup

Mysql數據庫備份與恢復

    背景:

    作爲一個運維工程師,經常會遇到硬件故障(冗餘)、軟件故障(bug)、自然災害、******、誤操作等對數據庫破壞的問題,所以一定要做好備份工作,在做好備份後還一定要會恢復,這兩項工作都是很重要的,備份要知道如何備份纔能有效的保護數據,同時恢復數據也是很繁忙的工作,有時可能需要一個團隊來完成。這裏介紹下Xtrabackup對Mysql數據庫的簡單備份和恢復。

    這裏的實驗是在Centos6.9上做的,如果是7版本,可能命令有所不同。

    備份注意事項:
    1、能容忍最多丟失多少數據;
    2、恢復數據需要在多長時間內完成;
    3、需要恢復哪些數據;       
    4、做恢復演練:
        測試備份的可用性;
        增強恢復操作效率;

    5、備份需要考慮因素:
            鎖定資源多長時間?
            備份過程的時長?
            備份時的服務器負載?
            恢復過程的時長?   
        備份策略:
            全量+差異 + binlogs
            全量+增量 + binlogs           
            備份手段:物理、邏輯

    備份類型:
    備份的數據集的範圍:
        完全備份:整個數據集;
        部分備份:數據集的一部分,比如部分表;       
    全量備份、增量備份、差異備份:
        完全備份
        增量備份:僅備份自上一次完全備份或 增量備份以來變量的那部數據;
        差異備份:僅備份自上一次完全備份以來變量的那部數據;    
    物理備份、邏輯備份:
        物理備份:複製數據文件進行的備份;
        邏輯備份:從數據庫導出數據另存在一個或多個文件中;   
    根據數據服務是否在線:
        熱備:讀寫操作均可進行的狀態下所做的備份;(MyISAM不支持熱備,InnoDB支持)
        溫備:可讀但不可寫狀態下進行的備份;
        冷備:讀寫操作均不可進行的狀態下所做的備份;

    備份什麼?
        1、數據
        2、二進制日誌、InnoDB的事務日誌;
        3、代碼(存儲過程、存儲函數、觸發器、事件調度器)
        4、服務器的配置文件(用於系統環境的恢復)

    Xtrabackup備份數據

        Xtrabackup是一個對InnoDB做數據備份的工具,支持在線熱備份(備份時不影響數據讀寫),是商業備份工具InnoDB Hotbackup的一個很好的替代品。    

    完全備份:
        完全+binlog(總結):
        備份:innobackupex --user --password= --host= /PATH/TO/BACKUP_DIR
        準備:innobackupex --apply-log  /PATH/TO/BACKUP_DIR
        恢復:innobackupex --copy-back
        注意:--copy-back需要在mysqld主機本地進行,mysqld服務不能啓動;
            innodb_log_file_size可能要重新設定;

        步驟1、在使用Mysql數據庫時,最好開啓binlog,也就是二進制日誌功能,到時可以用二進制按時間節點對文件進行恢復,使數據恢復更加準確。

        cbe0e680684da089a663e3058fa758e9.png

        步驟2、下載與安裝Xtrabackup軟件

        官網下載地址:https://www.percona.com/downloads/XtraBackup/LATEST/

        Xtrabackup提供的是rpm包,所以下載好後直接用yum安裝即可

        

c6afe20820798122d3a2ec52fb53fc6d.png


        步驟3、備份數據庫

        在安裝Xtrabackup時最好是關閉數據庫,安裝好後就可以啓動了。

        

03ae9061d4d3f6885e5144a61d5abe81.png

        開始備份數據:

        

27b29b86e13aba99091285ce6d4a4e8e.png


        932c67272328c98eda99db266185805f.png

4ca327300116064084620b667e35984d.png


        在看見了completed OK!之後才能確認備份是成功的,否則備份是失敗的。

        步驟4、查看數據庫備份情況

        

832d82c6273785bdbc09d1170dd91d1d.png

    Xtrabackup恢復數據

        步驟1、在確認了數據庫備份成功後,刪除數據庫裏的所有數據

        4db625687421f687cacabe63c8e3881b.png

        步驟2、關閉數據庫

        命令:service mysqld stop

        一定要關閉數據庫,因爲之後的操作如果數據庫是開着的,那操作都會失敗。

        步驟3、準備

        命令:innobackupex --apply-log /PATH

        這一步很重要,他可以將沒做完的事務全部回滾。保證數據庫的準確性。

        ea316664eac7b7f367f28d42850ff6a7.png

        d2caf264da95099fdb9569240f359be1.png

        步驟4、恢復數據

        命令:innobackupex --copy-back
        

e9589d26e0731b58542c166ec84274d8.png

        同樣的,最後看見completed OK就是恢復成功,PS:並不是上圖的completed OK

        步驟5、查看恢復的數據

        1ad115231d14c08fa07130b0aece2b28.png

        步驟6、修改權限或者所有者

        5ff85c3c9e525b3766ea359d51165bb8.png

        步驟7、啓動數據庫,查看數據

        af79e9ee73960bfd69d7fef88940b39b.png

        數據恢復完成。

        


           

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章