xtrabackup全備和全備恢復

大數(shù)據(jù)量備份與還原此衅,始終是個難點。當MYSQL超10G,用mysqldump來導出就比較慢了噪矛。在這里推薦xtrabackup,這個工具比mysqldump要快很多量蕊。

Xtrabackup介紹

Xtrabackup是什么

Xtrabackup是一個對InnoDB做數(shù)據(jù)備份的工具,支持在線熱備份(備份時不影響數(shù)據(jù)讀寫)艇挨,是商業(yè)備份工具InnoDB Hotbackup的一個很好的替代品残炮。
Xtrabackup有兩個主要的工具:xtrabackup、innobackupex

  • xtrabackup只能備份InnoDB和XtraDB兩種數(shù)據(jù)表缩滨,而不能備份MyISAM數(shù)據(jù)表
  • innobackupex是參考了InnoDB Hotbackup的innoback腳本修改而來的.innobackupex是一個perl腳本封裝势就,封裝了xtrabackup。主要是為了方便的 同時備份InnoDB和MyISAM引擎的表楷怒,但在處理myisam時需要加一個讀鎖蛋勺。并且加入了一些使用的選項。如slave-info可以記錄備份恢 復后鸠删,作為slave需要的一些信息抱完,根據(jù)這些信息,可以很方便的利用備份來重做slave刃泡。

Xtrabackup可以做什么 :

在線(熱)備份整個庫的InnoDB巧娱、 XtraDB表
在xtrabackup的上一次整庫備份基礎上做增量備份(innodb only)
以流的形式產(chǎn)生備份,可以直接保存到遠程機器上(本機硬盤空間不足時很有用)
MySQL數(shù)據(jù)庫本身提供的工具并不支持真正的增量備份烘贴,二進制日志恢復是point-in-time(時間點)的恢復而不是增量備份禁添。
Xtrabackup工具支持對InnoDB存儲引擎的增量備份,工作原理如下:

  • 首先完成一個完全備份桨踪,并記錄下此時檢查點的LSN(Log Sequence Number)老翘。
  • 在進程增量備份時,比較表空間中每個頁的LSN是否大于上次備份時的LSN锻离,如果是铺峭,則備份該頁,同時記錄當前檢查點的LSN汽纠。
    首 先卫键,在logfile中找到并記錄最后一個checkpoint(“l(fā)ast checkpoint LSN”),然后開始從LSN的位置開始拷貝InnoDB的logfile到xtrabackup_logfile虱朵;接著莉炉,開始拷貝全部的數(shù)據(jù)文 件.ibd;在拷貝全部數(shù)據(jù)文件結(jié)束之后碴犬,才停止拷貝logfile絮宁。
    因為logfile里面記錄全部的數(shù)據(jù)修改情況,所以翅敌,即時在備份過程中數(shù)據(jù)文件被修改過了羞福,恢復時仍然能夠通過解析xtrabackup_logfile保持數(shù)據(jù)的一致。
    因為innobackupex支持innodb,myisam,所以本文說一下蚯涮,怎么使用innobackupex

全備和全備還原

使用innobackupex創(chuàng)建全備

  • 本地創(chuàng)建全備
[root@localhost var]# innobackupex -H 127.0.0.1 -u root -p newpass -P 3306 -S /var/lib/mysql/mysql.sock /home/xtarback/xtrabackup01/

[root@localhost var]# innobackupex -H 127.0.0.1 -u root -p newpass -P 3306 -S /var/lib/mysql/mysql.sock /home/xtarback/xtrabackup01/
170223 15:55:36 innobackupex: Starting the backup operation

IMPORTANT: Please check that the backup run completes successfully.
           At the end of a successful backup run innobackupex
           prints "completed OK!".

Unrecognized character \x01; marked by <-- HERE after <-- HERE near column 1 at - line 1374.
170223 15:55:36 Connecting to MySQL server host: 127.0.0.1, user: root, password: set, port: 3306, socket: /var/lib/mysql/mysql.sock
Using server version 5.6.35
innobackupex version 2.4.6 based on MySQL server 5.7.13 Linux (x86_64) (revision id: 54967d1)
xtrabackup: uses posix_fadvise().
xtrabackup: cd to /var/lib/mysql
xtrabackup: open files limit requested 0, set to 1024
xtrabackup: using the following InnoDB configuration:
xtrabackup:   innodb_data_home_dir = .
xtrabackup:   innodb_data_file_path = ibdata1:12M:autoextend
xtrabackup:   innodb_log_group_home_dir = ./
xtrabackup:   innodb_log_files_in_group = 2
xtrabackup:   innodb_log_file_size = 50331648
InnoDB: Number of pools: 1
170223 15:55:36 >> log scanned up to (3692666)
xtrabackup: Generating a list of tablespaces
InnoDB: Allocated tablespace ID 1 for mysql/innodb_table_stats, old maximum was 0
170223 15:55:37 [01] Copying ./ibdata1 to /home/xtarback/xtrabackup01/2017-02-23_15-55-36/ibdata1
170223 15:55:37 [01]        ...done
170223 15:55:37 [01] Copying ./mysql/innodb_table_stats.ibd to /home/xtarback/xtrabackup01/2017-02-23_15-55-36/mysql/innodb_table_stats.ibd
170223 15:55:37 [01]        ...done
170223 15:55:37 [01] Copying ./mysql/innodb_index_stats.ibd to /home/xtarback/xtrabackup01/2017-02-23_15-55-36/mysql/innodb_index_stats.ibd
170223 15:55:37 [01]        ...done
....
....
....
170223 15:55:38 Finished backing up non-InnoDB tables and files
170223 15:55:38 Executing FLUSH NO_WRITE_TO_BINLOG ENGINE LOGS...
xtrabackup: The latest check point (for incremental): '3692666'
xtrabackup: Stopping log copying thread.
.170223 15:55:38 >> log scanned up to (3692666)

170223 15:55:38 Executing UNLOCK TABLES
170223 15:55:38 All tables unlocked
170223 15:55:38 Backup created in directory '/home/xtarback/xtrabackup01/2017-02-23_15-55-36/'
170223 15:55:38 [00] Writing backup-my.cnf
170223 15:55:38 [00]        ...done
170223 15:55:38 [00] Writing xtrabackup_info
170223 15:55:38 [00]        ...done
xtrabackup: Transaction log of lsn (3692666) to (3692666) was copied.
170223 15:55:39 completed OK! #全備份完成

在備份的同時治专,備份數(shù)據(jù)會在備份目錄下創(chuàng)建一個以當前日期時間為名字的目錄存放備份文件,/home/xtarback/xtrabackup01/2017-02-23_15-55-36/備份到此目錄下面

  • 備份目錄下面的各項文件說明
    1. xtrabackup_checkpoints —— 備份類型(如完全或增量)卖陵、備份狀態(tài)(如是否已經(jīng)為prepared狀態(tài))和LSN(日志序列號)范圍信息;
      每個InnoDB頁(通常為16k大小)都會包含一個日志序列號张峰,即LSN泪蔫。LSN是整個數(shù)據(jù)庫系統(tǒng)的系統(tǒng)版本號,每個頁面相關的LSN能夠表明此頁面最近是如何發(fā)生改變的喘批。

    2. xtrabackup_binlog_info —— mysql服務器當前正在使用的二進制日志文件及至備份這一刻為止二進制日志事件的位置撩荣。

    3. xtrabackup_binlog_pos_innodb —— 二進制日志文件及用于InnoDB或XtraDB表的二進制日志文件的當前position。

    4. xtrabackup_binary —— 備份中用到的xtrabackup的可執(zhí)行文件饶深;

    5. backup-my.cnf —— 備份命令用到的配置選項信息餐曹;

在使用innobackupex進行備份時,還可以使用--no-timestamp選項來阻止命令自動創(chuàng)建一個以時間命名的目錄敌厘;如此一來台猴,innobackupex命令將會創(chuàng)建一個BACKUP-DIR目錄來存儲備份數(shù)據(jù)。

內(nèi)部機制:在備份的時候innobackupex會調(diào)用xtrabackup來備份innodb表俱两,并復制所有的表定義饱狂,其他引擎的表(MyISAM,MERGE,CSV,ARCHIVE)。

使用innobackupex預備全備

創(chuàng)建完備份之后數(shù)據(jù)并沒有馬上可以被還原宪彩,需要回滾未提交事務休讳,前滾提交事務,讓數(shù)據(jù)庫文件保持一致性尿孔。
innobackupex使用--apply-log來做預備備份

innobackupex --apply-log /home/xtarback/xtrabackup01/2017-02-23_15-55-36/

輸出:

xtrabackup: starting shutdown with innodb_fast_shutdown = 1
InnoDB: FTS optimize thread exiting.
InnoDB: Starting shutdown...
InnoDB: Shutdown completed; log sequence number 3693619
170223 16:24:26 completed OK!

成功后俊柔,備份可以被用來還原數(shù)據(jù)庫了。

內(nèi)部機制:讀取備份文件夾中的配置文件活合,然后innobackupex重做已提交事務婆咸,回滾未提交事務,之后數(shù)據(jù)就被寫到了備份的數(shù)據(jù)文件(innodb文件)中芜辕,并重建日志文件。這一步隱式調(diào)用了2次xtrabackup –prepare块差。跟多關于xtrabackup可以看之后的章節(jié)侵续。

使用innobackupex還原備份

  • 模擬刪除mysql目錄下面的數(shù)據(jù)
[root@localhost mysql]# cd /var/lib/mysql
[root@localhost mysql]# rm -r ./*
[root@localhost mysql]# ll
總用量 0
[root@localhost mysql]#
  • 使用innobackupex --copy-back來還原備份

$ innobackupex --coyp-back /home/xtarback/xtrabackup01/2017-02-23_15-55-36/

會根據(jù)my.cnf復制所有備份到datadir下:

170223 16:34:50 Executing UNLOCK TABLES
170223 16:34:50 All tables unlocked
170223 16:34:50 Backup created in directory '/home/xtarback/xtrabackup01/2017-02-23_15-55-36/2017-02-23_16-34-48/'
170223 16:34:50 [00] Writing backup-my.cnf
170223 16:34:50 [00]        ...done
170223 16:34:50 [00] Writing xtrabackup_info
170223 16:34:50 [00]        ...done
xtrabackup: Transaction log of lsn (1625997) to (1625997) was copied.
170223 16:34:50 completed OK!

注:datadir必須是為空的,innobackupex –copy-back不會覆蓋已存在的文件憨闰。

  • 修改還原數(shù)據(jù)目錄的用戶屬組
cd /var/lib/mysql
[root@localhost mysql]# chown -R mysql:mysql ./*

注:datadir必須是為空的状蜗,innobackupex –copy-back不會覆蓋已存在的文件,還要注意鹉动,還原時需要先關閉服務轧坎,如果服務是啟動的,那么就不能還原到datadir泽示。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末缸血,一起剝皮案震驚了整個濱河市蜜氨,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌捎泻,老刑警劉巖飒炎,帶你破解...
    沈念sama閱讀 221,820評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異笆豁,居然都是意外死亡郎汪,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,648評論 3 399
  • 文/潘曉璐 我一進店門闯狱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來煞赢,“玉大人,你說我怎么就攤上這事哄孤≌罩” “怎么了?”我有些...
    開封第一講書人閱讀 168,324評論 0 360
  • 文/不壞的土叔 我叫張陵录豺,是天一觀的道長朦肘。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么邀桑? 我笑而不...
    開封第一講書人閱讀 59,714評論 1 297
  • 正文 為了忘掉前任爸邢,我火速辦了婚禮,結(jié)果婚禮上趴生,老公的妹妹穿的比我還像新娘。我一直安慰自己昏翰,他們只是感情好苍匆,可當我...
    茶點故事閱讀 68,724評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著棚菊,像睡著了一般浸踩。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上统求,一...
    開封第一講書人閱讀 52,328評論 1 310
  • 那天检碗,我揣著相機與錄音,去河邊找鬼码邻。 笑死折剃,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的像屋。 我是一名探鬼主播怕犁,決...
    沈念sama閱讀 40,897評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了奏甫?” 一聲冷哼從身側(cè)響起戈轿,我...
    開封第一講書人閱讀 39,804評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎扶檐,沒想到半個月后凶杖,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,345評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡款筑,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,431評論 3 340
  • 正文 我和宋清朗相戀三年智蝠,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片奈梳。...
    茶點故事閱讀 40,561評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡杈湾,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出攘须,到底是詐尸還是另有隱情漆撞,我是刑警寧澤,帶...
    沈念sama閱讀 36,238評論 5 350
  • 正文 年R本政府宣布于宙,位于F島的核電站浮驳,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏捞魁。R本人自食惡果不足惜至会,卻給世界環(huán)境...
    茶點故事閱讀 41,928評論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望谱俭。 院中可真熱鬧奉件,春花似錦、人聲如沸昆著。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,417評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凑懂。三九已至煤痕,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間接谨,已是汗流浹背杭攻。 一陣腳步聲響...
    開封第一講書人閱讀 33,528評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留疤坝,地道東北人。 一個月前我還...
    沈念sama閱讀 48,983評論 3 376
  • 正文 我出身青樓馆铁,卻偏偏與公主長得像跑揉,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,573評論 2 359

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

  • 1)介紹 PerconaXtraBackup(簡稱PXB)是Percona公司開發(fā)的一個用于MySQL數(shù)據(jù)庫物理熱...
    溫東閱讀 2,520評論 0 6
  • 文/Bruce.Liu1 文章大綱備份概念1.1. 備份目的1.2. 備份方式1.3. 備份類型1.4. 備份對象...
    BruceLiu1閱讀 3,916評論 4 15
  • xtrabackup 詳解(已糾正) xtrabackup是Percona公司CTO Vadim參與開發(fā)的一款基于...
    meng_philip123閱讀 2,843評論 0 5
  • 今年過年,父親給奶奶買了一部智能手機望侈,奶奶是一個典型的農(nóng)村婦女印蔬,只有小學文化,所以當時家里人包括我在內(nèi)都不理解父親...
    人木休閱讀 403評論 0 4
  • 一家專業(yè)男士形象設計館 愿景脱衙,讓天下男人更有面子 一個成功的男人需要配備一個名為五官風水特別設計的發(fā)型侥猬, 一個成功...
    f5c0fd0a6227閱讀 178評論 0 1