天天看點

MySQL資料庫備份之邏輯備份和實體備份概述

一. 前言

     邏輯備份和實體備份各有優劣,一般來說,實體備份恢複速度比較快,占用空間比較大,邏輯備份速度比較慢,占用空間比較小。邏輯備份的恢複成本高。

二. 邏輯備份

邏輯備份是備份sql語句,在恢複的時候執行備份的sql語句實作資料庫資料的重制。

1)mysqldump

mysqldump是采用SQL級别的備份機制,他将資料表導成SQL腳本檔案,是最常用的邏輯備份方法。

三. 實體備份

實體備份就是備份資料檔案了,比較形象點就是cp下資料檔案,但真正備份的時候自然不是的cp這麼簡單。

1)使用 xtrabackup 工具

是一個用來備份 MySQL資料庫的開源工具。

主要特點:

<1>. 線上熱備份。可以備份innodb和myisam。innodb主要應用recovery原理。myisam直接拷貝檔案。

<2>. 支援流備份。可以備份到disk,tape和reomot host。–stream=tar ./ | ssh user@remotehost cat “>” /backup/dir/

<3>. 支援增量備份。可以利用lsn和基礎備份目錄來進行增量備份。

<4>. 支援記錄slave上的master log和master position資訊。

<5>. 支援多個程序同時熱備份,xtrabackup的穩定性還是挺好的。

2)LVM

特點:熱備、支援所有基于本地磁盤的存儲引擎、快速備份、低開銷、容易保持完整性、快速恢複等。

3)cp + tar

使用直接拷貝資料庫檔案的方式進行打包備份,需要注意的是執行步驟:鎖表、備份、解表。

恢複也很簡單,直接拷貝到之前的資料庫檔案的存放目錄即可。

注意:對于Innodb引擎的表來說,還需要備份日志檔案,即ib_logfile*檔案。因為當Innodb表損壞時,就可以依靠這些日志檔案來恢複。

4)mysqlhotcopy

mysqlhotcopy是一個perl程式,是lock tables、flush tables 和cp或scp來快速備份資料庫。

它是備份資料庫或單個表的最快的途徑,但它隻能運作在資料庫檔案(包括資料表檔案、資料檔案、索引檔案)所在的機器上。

mysqlhotcopy隻能用于備份MyISAM。

5)使用mysql主從複制

mysql的複制是指将主資料庫的DDL和DML操作通過二進制檔案(bin-log)傳送到從伺服器上,然後在從伺服器上對這些日志做重新執行的操作,進而使得從伺服器和主伺服器保持資料的同步。

四. 參考出處

《How innobackupex Works》http://www.percona.com/doc/perconaxtrabackup/innobackupex/how_innobackupex_works.html

《使用xtrabackup做資料庫的增量備份》 http://www.cnblogs.com/cosiray/archive/2012/03/09/2388113.html

《MySQL備份和同步時使用LVM》 http://imysql.cn/?q=node/102

繼續閱讀