《Mysql應(yīng)用MySQL中使用innobackupex、xtrabackup進(jìn)行大數(shù)據(jù)的備份和還原教程》要點(diǎn):
本文介紹了Mysql應(yīng)用MySQL中使用innobackupex、xtrabackup進(jìn)行大數(shù)據(jù)的備份和還原教程,希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
大數(shù)據(jù)量備份與還原,始終是個(gè)難點(diǎn).當(dāng)MYSQL超10G,用mysqldump來導(dǎo)出就比較慢了.在這里推薦xtrabackup,這個(gè)工具比mysqldump要快很多.MYSQL必讀
一、Xtrabackup介紹MYSQL必讀
1、Xtrabackup是什么MYSQL必讀
Xtrabackup是一個(gè)對(duì)InnoDB做數(shù)據(jù)備份的工具,支持在線熱備份(備份時(shí)不影響數(shù)據(jù)讀寫),是商業(yè)備份工具InnoDB Hotbackup的一個(gè)很好的替代品.MYSQL必讀
Xtrabackup有兩個(gè)主要的工具:xtrabackup、innobackupexMYSQL必讀
1、xtrabackup只能備份InnoDB和XtraDB兩種數(shù)據(jù)表,而不能備份MyISAM數(shù)據(jù)表
2、 innobackupex是參考了InnoDB Hotbackup的innoback腳本修改而來的.innobackupex是一個(gè)perl腳本封裝,封裝了xtrabackup.主要是為了方便的 同時(shí)備份InnoDB和MyISAM引擎的表,但在處理myisam時(shí)需要加一個(gè)讀鎖.并且加入了一些使用的選項(xiàng).如slave-info可以記錄備份恢 復(fù)后,作為slave需要的一些信息,根據(jù)這些信息,可以很方便的利用備份來重做slave.MYSQL必讀
2、Xtrabackup可以做什么 :MYSQL必讀
在線(熱)備份整個(gè)庫(kù)的InnoDB、 XtraDB表MYSQL必讀
在xtrabackup的上一次整庫(kù)備份基礎(chǔ)上做增量備份(innodb only)
以流的形式產(chǎn)生備份,可以直接保存到遠(yuǎn)程機(jī)器上(本機(jī)硬盤空間不足時(shí)很有用)MYSQL必讀
MySQL數(shù)據(jù)庫(kù)本身提供的工具并不支持真正的增量備份,二進(jìn)制日志恢復(fù)是point-in-time(時(shí)間點(diǎn))的恢復(fù)而不是增量備份.
Xtrabackup工具支持對(duì)InnoDB存儲(chǔ)引擎的增量備份,工作原理如下:MYSQL必讀
(1)首先完成一個(gè)完全備份,并記錄下此時(shí)檢查點(diǎn)的LSN(Log Sequence Number).
(2)在進(jìn)程增量備份時(shí),比較表空間中每個(gè)頁(yè)的LSN是否大于上次備份時(shí)的LSN,如果是,則備份該頁(yè),同時(shí)記錄當(dāng)前檢查點(diǎn)的LSN.
首 先,在logfile中找到并記錄最后一個(gè)checkpoint(“l(fā)ast checkpoint LSN”),然后開始從LSN的位置開始拷貝InnoDB的logfile到xtrabackup_logfile;接著,開始拷貝全部的數(shù)據(jù)文 件.ibd;在拷貝全部數(shù)據(jù)文件結(jié)束之后,才停止拷貝logfile.MYSQL必讀
因?yàn)閘ogfile里面記錄全部的數(shù)據(jù)修改情況,所以,即時(shí)在備份過程中數(shù)據(jù)文件被修改過了,恢復(fù)時(shí)仍然能夠通過解析xtrabackup_logfile保持?jǐn)?shù)據(jù)的一致.MYSQL必讀
因?yàn)閕nnobackupex支持innodb,myisam,所以本文說一下,怎么使用innobackupex.MYSQL必讀
二,安裝xtrabackupMYSQL必讀
1、下載地址MYSQL必讀
http://www.percona.com/downloads/XtraBackup/MYSQL必讀
2、安裝MYSQL必讀
根據(jù)需求,選擇不同的版本,我選擇的是rpm安裝包,如果報(bào)以下錯(cuò)誤
MYSQL必讀
解決辦法:MYSQL必讀
[root@localhost xtrabackup]# yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL //安裝依賴包?
[root@localhost xtrabackup]# rpm -ivh percona-xtrabackup-2.2.4-5004.el6.x86_64.rpm?? //重新安裝?
warning: percona-xtrabackup-2.2.4-5004.el6.x86_64.rpm: Header V4 DSA/SHA1 Signature, key ID cd2efd2a: NOKEY?
Preparing... ########################################### [100%]?
1:percona-xtrabackup ########################################### [100%]?
MYSQL必讀
注意:MYSQL必讀
xtrabackup 2.2.4不支持mysql 5.1.73,所以如果要用新的xtrabackup,就要用高版本的mysql數(shù)據(jù)庫(kù),不然就會(huì)報(bào)以下錯(cuò)誤:
innobackupex: Error: Unsupported server version: '5.1.73'MYSQL必讀
二、修改my.cnfMYSQL必讀
查看一下mysqld下面有沒有datadir,如果沒有加上
MYSQL必讀
不加的話,還原數(shù)據(jù)的時(shí)候,有可能會(huì)出現(xiàn)以下問題:
MYSQL必讀
三、全部數(shù)據(jù)庫(kù)備份與還原MYSQL必讀
1、全部數(shù)據(jù)庫(kù)備份MYSQL必讀
如果報(bào)以下錯(cuò)誤:MYSQL必讀
解決辦法:在my.cnf的mysqld中加入以下內(nèi)容:MYSQL必讀
2、單數(shù)據(jù)庫(kù)備份MYSQL必讀
3、數(shù)據(jù)庫(kù)備份并壓縮MYSQL必讀
4、全數(shù)據(jù)還原MYSQL必讀
四、增量備份與還原MYSQL必讀
1、創(chuàng)建測(cè)試數(shù)據(jù)庫(kù)和表MYSQL必讀
2、增量備份
MYSQL必讀
3、在增量的基礎(chǔ)上在進(jìn)行增量備份MYSQL必讀
查看增量備份記錄文件:MYSQL必讀
增量備份做完后,把backup_test這個(gè)數(shù)據(jù)庫(kù)刪除掉,drop database backup_test;這樣可以對(duì)比還原后.MYSQL必讀
4、增量還原MYSQL必讀
在這里有三個(gè)目錄:MYSQL必讀
1)、/home/tank/backup/2014-09-18_16-35-12,全備份目錄
2)、/home/tank/backup/2014-09-18_18-05-20,第一次增量備份產(chǎn)生的目錄
3)、/home/tank/backup/2014-09-18_18-11-43,第二次增量備份產(chǎn)生的目錄MYSQL必讀
到這里增量還原,還沒有結(jié)束,還有最重要一步,就是要進(jìn)行一次全量還原.停止數(shù)據(jù)庫(kù),刪除/var/lib/mysql,在還原.MYSQL必讀
增量備份的原理就是,把增量目錄下的數(shù)據(jù),整合到全變量目錄下,然后在進(jìn)行,全數(shù)據(jù)量的還原.MYSQL必讀
總體來說,innobackupex速度快,支持innodb,myisam,用起來是還不是很方便,單庫(kù)還原,還是增量備份還原,都要進(jìn)行全部數(shù)據(jù)庫(kù)還原,這個(gè)不合理.MYSQL必讀
五、innobackup 常用參數(shù)說明MYSQL必讀
--defaults-file
同xtrabackup的--defaults-file參數(shù)MYSQL必讀
--apply-log
對(duì)xtrabackup的--prepare參數(shù)的封裝MYSQL必讀
--copy-back
做數(shù)據(jù)恢復(fù)時(shí)將備份數(shù)據(jù)文件拷貝到MySQL服務(wù)器的datadir ;MYSQL必讀
--remote-host=HOSTNAME
通過ssh將備份數(shù)據(jù)存儲(chǔ)到進(jìn)程服務(wù)器上;MYSQL必讀
--stream=[tar]
備 份文件輸出格式, tar時(shí)使用tar4ibd , 該文件可在XtarBackup binary文件中獲得.如果備份時(shí)有指定--stream=tar, 則tar4ibd文件所處目錄一定要在$PATH中(因?yàn)槭褂玫氖莟ar4ibd去壓縮, 在XtraBackup的binary包中可獲得該文件).
在 使用參數(shù)stream=tar備份的時(shí)候,你的xtrabackup_logfile可能會(huì)臨時(shí)放在/tmp目錄下,如果你備份的時(shí)候并發(fā)寫入較大的話 xtrabackup_logfile可能會(huì)很大(5G+),很可能會(huì)撐滿你的/tmp目錄,可以通過參數(shù)--tmpdir指定目錄來解決這個(gè)問題.MYSQL必讀
--tmpdir=DIRECTORY
當(dāng)有指定--remote-host or --stream時(shí), 事務(wù)日志臨時(shí)存儲(chǔ)的目錄, 默認(rèn)采用MySQL配置文件中所指定的臨時(shí)目錄tmpdirMYSQL必讀
--redo-only --apply-log組,
強(qiáng)制備份日志時(shí)只redo ,跳過rollback.這在做增量備份時(shí)非常必要.MYSQL必讀
--use-memory=#
該參數(shù)在prepare的時(shí)候使用,控制prepare時(shí)innodb實(shí)例使用的內(nèi)存量MYSQL必讀
--throttle=IOS
同xtrabackup的--throttle參數(shù)
--sleep=是給ibbackup使用的,指定每備份1M數(shù)據(jù),過程停止拷貝多少毫秒,也是為了在備份時(shí)盡量減小對(duì)正常業(yè)務(wù)的影響,具體可以查看ibbackup的手冊(cè) ;MYSQL必讀
--compress[=LEVEL]
對(duì)備份數(shù)據(jù)行壓縮,僅支持ibbackup,xtrabackup還沒有實(shí)現(xiàn);MYSQL必讀
--include=REGEXP
對(duì) xtrabackup參數(shù)--tables的封裝,也支持ibbackup.備份包含的庫(kù)表,例如:--include="test.*",意思是要備份 test庫(kù)中所有的表.如果需要全備份,則省略這個(gè)參數(shù);如果需要備份test庫(kù)下的2個(gè)表:test1和test2,則寫 成:--include="test.test1|test.test2".也可以使用通配符,如:--include="test.test*".MYSQL必讀
--databases=LIST
列出需要備份的databases,如果沒有指定該參數(shù),所有包含MyISAM和InnoDB表的database都會(huì)被備份;MYSQL必讀
--uncompress
解壓備份的數(shù)據(jù)文件,支持ibbackup,xtrabackup還沒有實(shí)現(xiàn)該功能;MYSQL必讀
--slave-info,
備 份從庫(kù), 加上--slave-info備份目錄下會(huì)多生成一個(gè)xtrabackup_slave_info 文件, 這里會(huì)保存主日志文件以及偏移, 文件內(nèi)容類似于:CHANGE MASTER TO MASTER_LOG_FILE='', MASTER_LOG_POS=0MYSQL必讀
--socket=SOCKET
指定mysql.sock所在位置,以便備份進(jìn)程登錄mysql.MYSQL必讀
轉(zhuǎn)載請(qǐng)注明本頁(yè)網(wǎng)址:
http://www.snjht.com/jiaocheng/1655.html