percona-xtrabackup備份及恢復mysql操作

1.安裝percona-xtrabackup

下載地址為http://www.percona.com/downloads/XtraBackup/
??1)服務器搭建本地yum源;
??2)yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL
??3)rpm -ivh libev-4.15-1.el6.rf.x86_64.rpm
??4)rpm -ivh percona-xtrabackup-24-2.4.7-1.el6.x86_64.rpm
??5)rpm -ivh percona-xtrabackup-24-debuginfo-2.4.7-1.el6.x86_64.rpm
??6)rpm -ivh percona-xtrabackup-test-24-2.4.7-1.el6.x86_64.rpm
??安裝完成,包含以下兩大模塊:
??xtrabackup:支持innodb存儲引擎表毅弧,xtradb存儲引擎表;
??innobackupex:支持innodb存儲引擎表类茂、xtradb存儲引擎表、myisam存儲引擎表托嚣; 常用的是innobackupex巩检,可以使用innobackupex –help查看更詳細的參數(shù)。

2.增量備份示意圖

image

3.percona-xtrabackup實現(xiàn)增量備份及恢復原理

1)與mysqldump的比較:
??Mysqldump是mysql自帶的備份工具示启,目錄在bin目錄下面:/usr/local/mysql/bin/mysqldump兢哭,支持基于innodb的熱備份。但是由于是邏輯備份夫嗓,所以速度不是很快迟螺,適合備份數(shù)據(jù)比較小的場景。Mysqldump完全備份+二進制日志可以實現(xiàn)基于時間點的恢復舍咖。
??對myisam存儲引擎的表矩父,只能使用溫備份,這個時候要防止數(shù)據(jù)的寫入排霉,所以先加上讀鎖窍株。這個時候也可以進入數(shù)據(jù)庫手動加讀鎖,不過這樣比較麻煩,可以在mysqldump工具中直接有一個加鎖的選擇球订,就是 --lock-all-tables 后裸,例如mysqldump --databases test --lock-all-tables --flush-logs > /tmp/backuptestdate+%F-%H-%M.sql。
??如果是備份單張表辙售,直接在庫名字test后面加上表名字即可轻抱。
??對于innodb存儲引擎表飞涂,可以熱備旦部,不必對數(shù)據(jù)庫進行加鎖的操作,加一個選項可以進行熱備份较店,--single-transaction士八,例如:

mysqldump --databases test --single-transaction --flush-logs--master-data=2> /tmp/backup_test_`date +%F-%H-%M`.sql

PS:注意點,恢復的時候記得關閉二進制日志:

mysql> set sql_log_bin=0;

因為這是基于邏輯備份方式梁呈,所以執(zhí)行sql會插入數(shù)據(jù)婚度,會記錄到二進制日志里面去,因為這事恢復官卡,所以插入的二進制日志基本沒有啥意思蝗茁,可以關閉掉,縮短恢復時間寻咒。

2)percona-xtrabackup的優(yōu)勢
??支持innodb的物理熱備份哮翘,支持完全備份,增量備份毛秘,而且速度非撤顾拢快,支持innodb存儲引起的數(shù)據(jù)在不同數(shù)據(jù)庫之間遷移叫挟,支持復制模式下的從機備份恢復備份恢復艰匙,為了讓xtrabackup支持更多的功能擴展,可以設立獨立表空間抹恳,打開 innodb_file_per_table功能员凝,啟用之后可以支持單獨的表備份。

3)基本原理
??數(shù)據(jù)庫首先奋献,使用percona-xtrabackup工具對進行全備健霹,然后再每次數(shù)據(jù)庫 的數(shù)據(jù)更新后對數(shù)據(jù)進行增量備份,每次增量備份均在上一次備份的基礎上秽荞≈韫恢復時依次把每次增量備份的數(shù)據(jù)恢復到全備中,最后使用合并的數(shù)據(jù)進行數(shù)據(jù)恢復扬跋。

4.percona-xtrabackup實現(xiàn)增量備份及恢復過程

1)全量備份
??首先創(chuàng)建備份目錄阶捆,執(zhí)行:

mkdir –p /home/xtrabackup/
innobackupex --user=root --password=root /home/xtrabackup/

出現(xiàn)“completed”提示時說明備份成功:

150318 19:32:49 innobackupex: Connection to database serverclosed
150318 19:32:49 innobackupex: completed

2)增量備份
??執(zhí)行命令:

innobackupex --user=root --password=root  --incremental  /home/xtrabackup/ --incremental-basedir=/home/xtrabackup/2017-06-29_16-04-29/

其中--incremental-basedir是剛剛生成的全量備份目錄;
??同樣出現(xiàn)“complete”提示是備份成功。
??3)對全量備份數(shù)據(jù)進行檢查

innobackupex --apply-log --redo-only 2017-06-29_16-04-29

出現(xiàn)下述提示洒试,說明數(shù)據(jù)沒有問題可以用作恢復:

130910 22:23:35  InnoDB: Starting shutdown...
130910 22:23:36  InnoDB: Shutdown completed; log sequence number 2098700
130910 22:23:36  innobackupex: completed OK!

4)合并增量備份和全量備份

innobackupex --apply-log --redo-only --incremental /home/xtrabackup/2017-06-29_16-04-29/ --incremental-dir=/home/xtrabackup/2017-06-29_16-15-18

同樣出現(xiàn)complet提示后合并完成倍奢。
??5)數(shù)據(jù)恢復
??假如存在數(shù)據(jù)丟失、誤刪數(shù)據(jù)庫等問題垒棋,需要數(shù)據(jù)恢復時卒煞,首先確認上述全量數(shù)據(jù)庫可以使用,然后執(zhí)行:

/etc/init.d/mysql stop                #關閉數(shù)據(jù)庫
mv /var/lib/mysql /var/lib/mysql_bak   #備份數(shù)據(jù)庫目錄
mkdir –p /var/lib/mysql       #創(chuàng)建新的數(shù)據(jù)庫目錄
innobackupex --datadir=/var/lib/mysql --copy-back 2017-06-29_16-04-29     #恢復數(shù)據(jù)庫
chown –R mysql:mysql /var/lib/mysql  #賦予數(shù)據(jù)庫目錄用戶權限
/etc/init.d/mysql restart              #啟動數(shù)據(jù)庫

執(zhí)行完成沒有錯誤即恢復完成叼架,可以檢查數(shù)據(jù)庫已經(jīng)成功恢復畔裕。 親測25G的數(shù)據(jù)庫恢復過程只需7min。 而如果采用mysqldump備份的數(shù)據(jù)庫恢復同樣大小的數(shù)據(jù)需要5~6小時乖订。

5.一些重要參數(shù)

--defaults-file
??同xtrabackup的--defaults-file參數(shù)
--apply-log
??對xtrabackup的--prepare參數(shù)的封裝
--copy-back
??做數(shù)據(jù)恢復時將備份數(shù)據(jù)文件拷貝到MySQL服務器的datadir扮饶;
--remote-host=HOSTNAME
??通過ssh將備份數(shù)據(jù)存儲到進程服務器上;
--stream=[tar]
??備份文件輸出格式, tar時使用tar4ibd , 該文件可在XtarBackup binary文件中獲得.如果備份時有指定--stream=tar, 則tar4ibd文件所處目錄一定要在$PATH中(因為使用的是tar4ibd去壓縮, 在XtraBackup的binary包中可獲得該文件)乍构。
??在使用參數(shù)stream=tar備份的時候甜无,你的xtrabackup_logfile可能會臨時放在/tmp目錄下,如果你備份的時候并發(fā)寫入較大的話 xtrabackup_logfile可能會很大(5G+)哥遮,很可能會撐滿你的/tmp目錄岂丘,可以通過參數(shù)--tmpdir指定目錄來解決這個問題。 --tmpdir=DIRECTORY 當有指定--remote-host or --stream時, 事務日志臨時存儲的目錄, 默認采用MySQL配置文件中所指定的臨時目錄tmpdir --redo-only--apply-log組, 強制備份日志時只redo ,跳過rollback眠饮。這在做增量備份時非常必要奥帘。 --use-memory=# 該參數(shù)在prepare的時候使用,控制prepare時innodb實例使用的內(nèi)存量君仆,用來取代my.cnf中的buffer_pool_size值翩概,如果你是獨立服務器,而且內(nèi)存足夠大的話返咱,為了加快備份恢復的效率钥庇,你可以調(diào)大--use-memory這個參數(shù)值
--throttle=IOS
??同xtrabackup的--throttle參數(shù)
--sleep=
??是給ibbackup使用的,指定每備份1M數(shù)據(jù)咖摹,過程停止拷貝多少毫秒评姨,也是為了在備份時盡量減小對正常業(yè)務的影響,具體可以查看ibbackup的手冊萤晴;
--compress[=LEVEL]
??對備份數(shù)據(jù)迚行壓縮吐句,僅支持ibbackup,xtrabackup還沒有實現(xiàn)店读;
--include=REGEXP
??對 xtrabackup參數(shù)--tables的封裝嗦枢,也支持ibbackup。備份包含的庫表屯断,例如:--include="test."文虏,意思是要備份 test庫中所有的表侣诺。如果需要全備份,則省略這個參數(shù)氧秘;如果需要備份test庫下的2個表:test1和test2,則寫成:--include="test.test1|test.test2"年鸳。也可以使用通配符,如:--include="test.test"丸相。
--databases=LIST
??列出需要備份的databases搔确,如果沒有指定該參數(shù),所有包含MyISAM和InnoDB表的database都會被備份灭忠;
--uncompress
??解壓備份的數(shù)據(jù)文件膳算,支持ibbackup,xtrabackup還沒有實現(xiàn)該功能更舞;
--slave-info
??備份從庫, 加上--slave-info備份目錄下會多生成一個xtrabackup_slave_info 文件, 這里會保存主日志文件以及偏移, 文件內(nèi)容類似于:CHANGE MASTER TO MASTER_LOG_FILE='', MASTER_LOG_POS=0
--socket=SOCKET
??指定mysql.sock所在位置畦幢,以便備份進程登錄mysql.
--safe-slave-backup
??則會暫停Slave的SQL線程,等待到?jīng)]有打開的臨時表的時候開始備份.備份結束后SQL線程會自動啟動,這樣就可以確保一致性的復制狀態(tài).

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市缆蝉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瘦真,老刑警劉巖刊头,帶你破解...
    沈念sama閱讀 221,888評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異诸尽,居然都是意外死亡原杂,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,677評論 3 399
  • 文/潘曉璐 我一進店門您机,熙熙樓的掌柜王于貴愁眉苦臉地迎上來穿肄,“玉大人,你說我怎么就攤上這事际看∠滩” “怎么了?”我有些...
    開封第一講書人閱讀 168,386評論 0 360
  • 文/不壞的土叔 我叫張陵仲闽,是天一觀的道長脑溢。 經(jīng)常有香客問我,道長赖欣,這世上最難降的妖魔是什么屑彻? 我笑而不...
    開封第一講書人閱讀 59,726評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮顶吮,結果婚禮上社牲,老公的妹妹穿的比我還像新娘。我一直安慰自己悴了,他們只是感情好搏恤,可當我...
    茶點故事閱讀 68,729評論 6 397
  • 文/花漫 我一把揭開白布汗菜。 她就那樣靜靜地躺著,像睡著了一般挑社。 火紅的嫁衣襯著肌膚如雪陨界。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,337評論 1 310
  • 那天痛阻,我揣著相機與錄音菌瘪,去河邊找鬼。 笑死阱当,一個胖子當著我的面吹牛俏扩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播弊添,決...
    沈念sama閱讀 40,902評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼录淡,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了油坝?” 一聲冷哼從身側響起嫉戚,我...
    開封第一講書人閱讀 39,807評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎澈圈,沒想到半個月后彬檀,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,349評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡瞬女,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,439評論 3 340
  • 正文 我和宋清朗相戀三年窍帝,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片诽偷。...
    茶點故事閱讀 40,567評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡坤学,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出报慕,到底是詐尸還是另有隱情深浮,我是刑警寧澤,帶...
    沈念sama閱讀 36,242評論 5 350
  • 正文 年R本政府宣布卖子,位于F島的核電站略号,受9級特大地震影響,放射性物質發(fā)生泄漏洋闽。R本人自食惡果不足惜玄柠,卻給世界環(huán)境...
    茶點故事閱讀 41,933評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望诫舅。 院中可真熱鬧羽利,春花似錦、人聲如沸刊懈。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,420評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至匾浪,卻和暖如春皇帮,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蛋辈。 一陣腳步聲響...
    開封第一講書人閱讀 33,531評論 1 272
  • 我被黑心中介騙來泰國打工属拾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人冷溶。 一個月前我還...
    沈念sama閱讀 48,995評論 3 377
  • 正文 我出身青樓渐白,卻偏偏與公主長得像,于是被迫代替她去往敵國和親逞频。 傳聞我的和親對象是個殘疾皇子纯衍,可洞房花燭夜當晚...
    茶點故事閱讀 45,585評論 2 359

推薦閱讀更多精彩內(nèi)容