mysql總結2(資料備份)

2021-08-18 03:33:21 字數 2685 閱讀 2361

為什麼要資料備份:

災難恢復;硬體故障;軟體故障;自然災害;黑客攻擊;誤操作……

要注意的問題:

能容忍多大的資料丟失

恢復資料需要在多長時間內完成

需要恢復哪些資料

建議經常對資料備份進行還原測試,免得需要用到的時侯發現「看似備份成功的資料無法還原

備份型別:

(1)完全備份 部分備份

完全備份:整個資料集

部分備份:只備份資料子集

(2)完全備份 增量備份 差異備份

增量備份:僅備份最近一次完全備份或增量備份(如果存在增量)以來變化的資料 《增量備份還原起來很麻煩,因為要乙個增量乙個增量的恢復資料,但節省空間》

差異備份:僅備份最近完全備份以來變化的資料

如圖上面為增量備份,下面為差異備份(起點均為完全備份)。可以看到差異備份比增量備份更浪費空間

在生產環境中一般會使用 :完全+增量 | 完全+差異

(3)熱備份 溫備份 冷備份

熱備:讀寫操作均可行(mysql 的主從複製)

溫備:讀操作可執行,寫操作不能執行

冷備:讀寫操作均不可執行

myisam:溫備,不能熱備

innodb:熱備

(4)邏輯備份、物理備份

物理備份:直接複製資料檔案進行備份(特點:直接複製資料,速度很快)

邏輯備份:(有的資料只是乙個臨時畫好的空間。並沒有資料,完全複製過來是沒有必要的。)根據mysql協議,從資料庫中「匯出」資料另存而進行備份 。(與儲存引擎無關)

場景:某公司乙個月做一次完全備份,一天做一次增量備份。每天做增量是晚上的2點鐘。今天中午11點資料損壞,這時我們去還原,最多只能還原到昨天凌晨兩點的資料,那麼昨天凌晨兩點到今天中午11點的資料怎麼辦?

這裡就要用到二進位制日誌了,所以生產環境中開啟二進位制日誌這種機制是至關重要的.

問題來了,既然有了二進位制日誌,為什麼還要有備份?

如果資料特別大,二進位制日誌跑起來是非常耗時的。如果有備份,我們可以做物理備份(將資料檔案拷貝過來)

備份什麼:

資料、

二進位制日誌、innodb的事務日誌

**(儲存過程、儲存函式、觸發器、事件排程器)

伺服器的配置檔案

備份設計方案:

資料集:完全+增量 | 完全 + 差異

備份手段物理、邏輯

備份工具:

mysqldump:邏輯備份工具,適用於所有儲存引擎。(溫備;完全備份、部分備份;對innodb儲存引擎支援熱備)

cp,tar複製工具,物理備份工具、適用於所有儲存引擎(冷備;完全備份,備份備份)

lvm2的快照:幾乎熱備,借助於檔案系統管理工具進行備份

mysqlhotcopy:幾乎冷備,僅適用於myisam引擎;

lvm快照原理(

在某乙個狀態下做備份的時候,可能有應用正在訪問某乙個檔案或者資料庫,這

就是使得備份的時候檔案處於乙個狀態,而備份完後,檔案卻處於另外乙個狀態,從而造成備份的非一致性,這種狀態恢復資料庫資料幾乎不會成功.

使用lvm快照的代價就是以空間換取時間。

lvm中snapshot通過「寫時複製」(copy on write) 來實現,

snaphot只對lvm有效

當乙個snapshot建立的時候,僅拷貝原始捲裡資料的元資料(meta-data)。建立的時候,並不會有資料的物理拷貝,因此snapshot的建立幾乎是實時的,當原始卷上有寫操作執行時,snapshot跟蹤原始卷塊的改變,這個時候原始卷上將要改變的資料在改變之前被拷貝到snapshot預留的空間裡,因此這個原理的實現叫做寫時複製(copy-on-write)

在寫操作寫入塊之前,將原始資料移動到 snapshot空間裡,這樣就保證了所有的資料在snapshot建立時保持一致。而對於snapshot的讀操作,如果是讀取資料塊是沒有修改過的,那麼會將讀操作直接重定向到原始卷上,如果是要讀取已經修改過的塊,那麼就讀取拷貝到snapshot中的塊。

建立snapshot的大小並不需要和原始卷一樣大,其大小僅僅只需要考慮兩個方面:從shapshot建立到釋放這段時間內,估計塊的改變量有多大;資料更新的頻率。一旦 snapshot的空間記錄滿了原始卷塊變換的資訊,那麼這個snapshot立刻被釋放,從而無法使用,從而導致這個snapshot無效

備份工具的選擇:

(1) mysqldump+複製binlog:

mysqldump:完全備份

複製binlog:binlog中指定時間範圍的event ;增量備份;

(2) lvm2快照+複製binlog:

lvm2快照:使用cp或tar做物理備份;完全備份

複製binlog指定的時間範圍的event:增量備份

(3) xtrabackup:

由percona提供的支援對innodb做熱備(物理備份)的工具; 完全備份、增量備份

MySQL資料庫備份 2

1 使用mysqldump備份和拷貝資料庫 當你使用mysqldumo程式產生資料庫備份檔案時,預設地,檔案內容包含建立正在傾倒的表的create語句和包含表中行資料的insert語句。換句話說,mysqldump產生的輸出可在以後用作mysql的輸入來重建資料庫。你可以將整個資料庫傾倒進乙個單獨的...

MySQL資料庫備份 2

背景 之前介紹了mysql資料庫在本機備份之後通過rsync軟體將備份資料同步到其他機器,但這種備份方式占用資料儲存。現在用單獨的檔案伺服器作為備份的客戶端,在檔案伺服器上連線mysql進行資料備份,從而實現了 異地容災 備份。在資料庫伺服器完全宕機的情況下,能夠根據異機儲存的備份資料實現資料恢復,...

mysql 備份源資料 mysql 資料備份與還源

一 資料備份 1 使用mysqldump命令備份 mysqldump命令將資料庫中的資料備份成乙個文字檔案。表的結構和表中的資料將儲存在生成的文字檔案中。mysqldump命令的工作原理很簡單。它先查出需要備份的表的結構,再在文字檔案中生成乙個create語句。然後,將表中的所有記錄轉換成一條ins...