1. 程式人生 > >數據庫 之 數據備份和恢復概念

數據庫 之 數據備份和恢復概念

負載 實現 黑客 sql 復數 狀態 sel 環境 需要

本文主要介紹數據備份和恢復的相關概念

備份:存儲的數據副本;

原始數據:持續改變;

恢復:把副本應用到線上系統;

僅能恢復至備份操作時刻的數據狀態;

時間點恢復:通過binary logs實現基於時間點的恢復;

為什麽備份

災難恢復:硬件故障(冗余,僅解決硬件不可用時,服務正常提供)、軟件故障(bug)、自然災害、黑客攻擊、誤操作(人為錯誤操作導致,出現幾率最大)、...

測試;將生產的數據拷貝到測試環境中做測試,達到和生產環境一樣的效果

備份會造成對系統的I/O壓力,決定如何備份要權衡

備份時應該註意事項:

能容忍最多丟失多少數據;

恢復數據需要在多長時間內完成;

需要恢復哪些數據;決定了要備份哪些數據

做恢復演練:

測試備份的可用性;

增強恢復操作效率;

根據備份類型分類:

備份的數據集的範圍:

完全備份和部分備份

完全備份:整個數據集;

部分備份:數據集的一部分,比如部分表;

全量備份、增量備份、差異備份:

完全備份:備份所有的數據

增量備份:僅備份自上一次完全備份或 增量備份以來變量的那部數據;

差異備份:僅備份自上一次完全備份以來變量的那部數據;差異是增量的另一表現形式。這樣會導致占用更多的空間,但是好處是,恢復時間會比增量備份恢復來得快

可以根據需求來實現用哪種備份形式

如數據庫異常時,先用全部恢復,再用增量恢復,最後再用二進制文件來重復對應時間段的恢復,完成完整的恢復。

物理備份、邏輯備份:

物理備份:復制數據文件進行的備份;不需要啟動mysql服務,直接復制相關文件,效率更高。

邏輯備份:從數據庫導出數據另存在一個或多個文件中;數據量較小的時候很常用。通過mysql語句進行備份

數據量大的時候,建議使用物理備份。

根據數據服務是否在線:

熱備:讀寫操作均可進行的狀態下所做的備份;最可行的方案。可能會導致數據的時間戳不一致,如備份過程,有些數據同時被更改了,導致數據時間戳不一樣。所以熱備技術復雜度很高,但是這個是必須要使用的。所以需要有技術來實現。myISAM不支持熱備,innodb引擎支持熱備。

註意,innodb可以做熱備的原因有兩個

1.lsn:日誌序列號,每次日誌增加時,這個數值就會被加1,會一直累加。做全量備份,就會使得lsn一直增加到最大值。

innodb使用表空間來存儲數據,表空間內部有黑盒,可以理解為把表空間分成多個數據塊,每一刻都是獨立而自制的單位,會通過日誌序列號(lsn)來記錄,如果數據塊的數據被修改,那麽lsn就會增加,如第一塊數據塊被修改了,則加1,如lsn 為1,此時第二塊數據塊被修改,再加1,,此時lsn為2,之後lsn依次累加。備份是可以根據lsn的序列號進行恢復。

2.關鍵因素,innodb支持mvcc機制,為每個事務啟用快照。因此讀取到的數據都是啟用事務那個時刻的數據。相當於是內部快照功能,通過快照可以訪問到時間點同一的數據,所以innodb可以支持熱備。

溫備:可讀但不可寫狀態下進行的備份;基本不可行,因為不能寫入,很多功能不能實現

冷備:讀寫操作均不可進行的狀態下所做的備份;最安全,但是基本不用。如果有數據庫主從復制時,可以停掉主的,使用從的,這樣就可以實現冷備。

備份需要考慮因素:

鎖定資源多長時間?

備份過程的時長?

備份時的服務器負載?

恢復過程的時長?

備份策略:

全量+差異 + binlogs

全量+增量 + binlogs

備份手段:物理、邏輯

建議采用物理熱備,因為物理備份性能好,效率高,熱備不中斷業務。

實現方法:

mysqldump+binlog

lvm2+cp/tar+binlog

xtrabackup(innodb)+binlog

備份什麽?

數據

二進制日誌、InnoDB的事務日誌;

代碼(存儲過程、存儲函數、觸發器、事件調度器)

服務器的配置文件

備份工具:

mysqldump:mysql服務自帶的備份工具;邏輯備份工具;

支持完全備份和部分備份;

InnoDB引擎中mysqldump支持熱備;

MyISAM引擎中mysqldump支持溫備;

cp/tar:復制後歸檔

借助lvm2的快照(請求一個全局鎖)功能進行備份,之後立即釋放鎖,達到幾乎熱備的效果(快照執行速度快,執行的時候不能被訪問,所以叫幾乎熱備,中斷時間短,但是lvm出現故障後數據恢復困難,但是lvm擴展起來方便);屬於物理備份;

註意:不能僅備份數據文件;要同時備份事務日誌;前提:要求數據文件和事務日誌位於同一個邏輯卷;

xtrabackup:實現innobackup(innobackup是收費的,但是這個工具很好用)的功能的另一個工具,由Percona提供,開源工具,支持對InnoDB做熱備,物理備份工具;

完全備份、部分備份;

完全備份、增量備份;

完全備份、差異備份;

mysqlhotcopy:實現幾乎冷備,mysql自帶

select:一般用於一張表中的一些行,用這個工具,其他情況不用

備份:SELECT cluase INTO OUTFILE 'FILENAME';

恢復:CREATE TABLE

導入:LOAD DATA

備份建議使用mysqldump 或者 xtrabackup這兩個工具來實現。針對這這兩個工具如何實現備份將通過例子進行介紹

xtrabackup:支持物理備份

全量+差異+binlog ,如每個月做全量,每天做差異,再用binlog做時間點備份

全量+增量+binlog

mysqldump:只支持全量,數量量小,如幾十G的數據,可以用這個工具

全量+binlog


數據庫 之 數據備份和恢復概念