1. 程式人生 > >Mysql數據庫備份與恢復--Xtrabackup

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

mysql innodb 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,也就是二進制日誌功能,到時可以用二進制按時間節點對文件進行恢復,使數據恢復更加準確。

技術分享

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

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

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

技術分享


步驟3、備份數據庫

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

技術分享

開始備份數據:

技術分享


技術分享

技術分享


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

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

技術分享

Xtrabackup恢復數據

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

技術分享

步驟2、關閉數據庫

命令:service mysqld stop

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

步驟3、準備

命令:innobackupex --apply-log /PATH

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

技術分享

技術分享

步驟4、恢復數據

命令:innobackupex --copy-back

技術分享

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

步驟5、查看恢復的數據

技術分享

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

技術分享

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

技術分享

數據恢復完成。




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