一. 前言
邏輯備份和實體備份各有優劣,一般來說,實體備份恢複速度比較快,占用空間比較大,邏輯備份速度比較慢,占用空間比較小。邏輯備份的恢複成本高。
二. 邏輯備份
邏輯備份是備份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