xtrabackup備份恢復(fù)

Percona XtraBackup 支持的mysql版本信息:

Percona XtraBackup下包含兩個工具,Innobackup和xtrabackup栏豺。
下面介紹下各個版本這兩個工具的差異彬碱。

2.2 版本支持 InnoDB, XtraDB, and MyISAM tables on MySQL 5.1, 5.5 and 5.6 servers, as well as Percona Serverwith XtraDB.
innobackupex a wrapper script that provides functionality to backup a wholeMySQL database instance with MyISAM, InnoDB, and XtraDBtables. ###2.2版本時期都用此工具備份,因為可備份包含Innodb和Myisam引擎的表奥洼;
xtrabackup a compiled C binary, which copies only InnoDB and XtraDB data ###不支持備份Myisam表堡妒。

2.3 版本支持 InnoDB, XtraDB, and MyISAM tables on MySQL 5.1, 5.5 and 5.6 servers, as well as Percona Serverwith XtraDB. ###該版本中xtrabackup支持了Innodb和Myisam引擎的表備份,innobackupex工具只是xtrabackup的一個軟鏈接溉卓,而且在后續(xù)版本中會被去掉皮迟。
innobackupex innobackupex is the symlink for xtrabackup. innobackupexstill supports all features and syntax as 2.2 version did, but is now deprecated and will be removed in next major release.
xtrabackup a compiled C binary that provides functionality to backup a whole MySQL database instance with MyISAM, InnoDB, and XtraDB tables.

2.4 版本支持 InnoDB, XtraDB, and MyISAM tables on MySQL 5.1, 5.5, 5.6 and 5.7 servers, as well as Percona Server with XtraDB. ###該版本中xtrabackup支持了mysql5.7,其他特性和2.3版本一致桑寨。
innobackupex innobackupex is the symlink for xtrabackup. innobackupexstill supports all features and syntax as 2.2 version did, but is now deprecated and will be removed in next major release.
xtrabackup a compiled C binary that provides functionality to backup a whole MySQL database instance with MyISAM, InnoDB, and XtraDBtables.

8.0 版本支持 InnoDB, XtraDB, and MyISAM tables on MySQL 8.0 servers as well as Percona Server with XtraDB, Percona Server 8.0, and Percona XtraDB Cluster 8.0伏尼。 ###此版本單獨(dú)為mysql8.0開發(fā),不支持8.0之前的db版本尉尾。
xtrabackup a compiled C binary that provides functionality to backup a whole MySQL database instance with MyISAM, InnoDB, and XtraDB tables.
innobackupex ###此工具已經(jīng)被移除

目前使用版本大多以2.4為主爆阶,故不區(qū)分 xtrabackup 和 innobackupex,Myisam和Innodb 都支持沙咏。
所以以 xtrabackup 為例測試備份恢復(fù):

全備和恢復(fù)
全量備份:
xtrabackup -uroot -proot123 --backup --target-dir=/data/backup/20190103/

全量恢復(fù):
xtrabackup --prepare --target-dir=/data/backup/20190103/
xtrabackup --move-back|--copy-back --target-dir=/data/backup/20190103/ --datadir=/data/mysql/mysql3306/data
--move-back 不保留備份辨图,相當(dāng)于 mv
--copy-back 保留備份,相當(dāng)于cp
chown -R mysql:mysql /data/mysql/mysql3306/data

啟動:
service mysql start
增量備份和恢復(fù)
先做全量備份:
xtrabackup -uroot -proot123 --parallel=4 --backup --target-dir=/data/backup/20190103/
[root@localhost 20190103]# cat xtrabackup_checkpoints
backup_type = full-backuped
from_lsn = 0
to_lsn = 2558962
last_lsn = 2558971
compact = 0
recover_binlog_info = 0

增量備份1:
xtrabackup -uroot -proot123 --backup --parallel=4 --target-dir=/data/backup/inc1 --incremental-basedir=/data/backup/20190103/
[root@localhost inc1]# cat xtrabackup_checkpoints 
backup_type = incremental
from_lsn = 2558962
to_lsn = 2559915
last_lsn = 2559924
compact = 0
recover_binlog_info = 0

增量備份2:
xtrabackup -uroot -proot123 --backup --target-dir=/data/backup/inc2 --incremental-basedir=/data/backup/inc1
[root@localhost inc2]# cat xtrabackup_checkpoints 
backup_type = incremental
from_lsn = 2559915
to_lsn = 2560568
last_lsn = 2560577
compact = 0
recover_binlog_info = 0

In this case you can see that there is a difference between the to_lsn (last checkpoint LSN) and last_lsn (last copied LSN), this means that there was some traffic on the server during the backup process. 
to_lsn和last_lsn之間存在差異肢藐,表示備份期間服務(wù)器有some traffic

增量備份時有兩種增量備份策略:
1.讀取所有的頁的LSN故河,找到LSN大于之前的全備或者增量備的頁,然后copy pages吆豹;
2.適用于percona server鱼的,開啟 [changed page tracking]參數(shù)理盆,可以將變化的頁記錄到一個位圖文件中,增量備份時只需要讀取該文件即可凑阶,大大減少讀取數(shù)據(jù)頁的請求 猿规。即使位圖文件可用,你也可以強(qiáng)制讀取所有頁宙橱, [xtrabackup --incremental-force-scan] 姨俩。
實(shí)際上,你也可以指定LSN來執(zhí)行增量備份 [xtrabackup --incremental-lsn]师郑,而不需要之前的全備文件哼勇, 不過恢復(fù)時仍然需要全備,否則這個增量備份將毫無用處呕乎。

備份完成后再執(zhí)行幾條sql語句积担,模擬實(shí)際場景:
insert into tt values(400); 
insert into tt values(401); 
insert into tt values(402);
然后模擬數(shù)據(jù)庫宕機(jī),恢復(fù)數(shù)據(jù): kill -9 xxxx
刪除數(shù)據(jù)文件目錄: mv /data/mysql/mysql3306/data /data/mysql/mysql3306/data.bak
刪除日志文件目錄: mv /data/mysql/mysql3306/logs /data/mysql/mysql3306/logs.bak
創(chuàng)建需要目錄: mkdir /data/mysql/mysql3306/{data,logs}

完整及增量恢復(fù)
prepare:
xtrabackup --prepare --apply-log-only --target-dir=/data/backup/20190103
xtrabackup --prepare --apply-log-only --target-dir=/data/backup/20190103 --incremental-dir=/data/backup/inc1
xtrabackup --prepare --target-dir=/data/backup/20190103 --incremental-dir=/data/backup/inc2   ##最后一個去掉 --apply-log-only參數(shù)

restore:
xtrabackup --parallel=4 --copy-back --target-dir=/data/backup/20190103 --datadir=/data/mysql/mysql3306/data

啟動:
service mysqld start

由于備份完成后仍有數(shù)據(jù)變動猬仁,查看恢復(fù)完成的最后binlog位置:
下面兩種方式均可以:
一是查看增量備份文件的記錄
二是查看全部restore完成后的文件記錄帝璧,二者一致
[root@localhost data]# cat /data/backup/inc2/xtrabackup_binlog_info
mysql-bin.000001        2576

[root@localhost data]# cat /data/mysql/mysql3306/data/xtrabackup_binlog_pos_innodb 
mysql-bin.000001        2576

如果主機(jī)上還保存有最近的binlog文件,則恢復(fù)即可:
mysqlbinlog --start-position=2576 mysql-bin.000001 |mysql -uroot -proot123
壓縮備份與恢復(fù):
多線程壓縮全備:
xtrabackup -uroot -proot123 --backup --compress --compress-threads=4 --target-dir=/data/backup/compressed/ ## 1.4G可以壓縮到16M

全備解壓縮:
yum install -y qpress
xtrabackup --parallel=4 --decompress --target-dir=/data/backup/compressed/ --remove-original

全備恢復(fù):
xtrabackup --prepare --target-dir=/data/backup/compressed/
xtrabackup --move-back|--copy-back --target-dir=/data/backup/20190103/ --datadir=/data/mysql/mysql3306/data
chown -R mysql:mysql /var/lib/mysql

啟動:
service mysql start
加密備份與恢復(fù):
加密備份:
生成密鑰
[root@localhost backup]# openssl rand -base64 24
5QsS+fykEURHFmuLcFS81aIkCLaVJIyv

xtrabackup -uroot -proot123 --backup --target-dir=/data/backup/encrypt --encrypt=AES256 --encrypt-threads=4 --encrypt-chunk-size=64K --encrypt-key="5QsS+fykEURHFmuLcFS81aIkCLaVJIyv"
或者
echo -n "5QsS+fykEURHFmuLcFS81aIkCLaVJIyv" > /data/backup/keyfile
xtrabackup -uroot -proot123 --backup --target-dir=/data/backup/encrypt --encrypt=AES256 --encrypt-threads=4 --encrypt-chunk-size=64K --encrypt-key-file=/data/backup/keyfile

解密:
xtrabackup --decrypt=AES256 --parallel=4 --encrypt-key="5QsS+fykEURHFmuLcFS81aIkCLaVJIyv" --target-dir=/data/backup/encrypt --remove-original

恢復(fù):
xtrabackup --prepare --target-dir=/data/backup/encrypt/
xtrabackup --move-back|--copy-back --target-dir=/data/backup/encrypt/ --datadir=/data/mysql/mysql3306/data
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末湿刽,一起剝皮案震驚了整個濱河市的烁,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诈闺,老刑警劉巖渴庆,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異雅镊,居然都是意外死亡襟雷,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門仁烹,熙熙樓的掌柜王于貴愁眉苦臉地迎上來耸弄,“玉大人,你說我怎么就攤上這事卓缰〖瞥剩” “怎么了?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵征唬,是天一觀的道長捌显。 經(jīng)常有香客問我,道長总寒,這世上最難降的妖魔是什么扶歪? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮偿乖,結(jié)果婚禮上击罪,老公的妹妹穿的比我還像新娘哲嘲。我一直安慰自己贪薪,他們只是感情好媳禁,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著画切,像睡著了一般竣稽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上霍弹,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天毫别,我揣著相機(jī)與錄音,去河邊找鬼典格。 笑死岛宦,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的耍缴。 我是一名探鬼主播砾肺,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼防嗡!你這毒婦竟也來了变汪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤蚁趁,失蹤者是張志新(化名)和其女友劉穎裙盾,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體他嫡,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡番官,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了钢属。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鲤拿。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖署咽,靈堂內(nèi)的尸體忽然破棺而出近顷,到底是詐尸還是另有隱情,我是刑警寧澤宁否,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布窒升,位于F島的核電站,受9級特大地震影響慕匠,放射性物質(zhì)發(fā)生泄漏饱须。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一台谊、第九天 我趴在偏房一處隱蔽的房頂上張望蓉媳。 院中可真熱鬧譬挚,春花似錦、人聲如沸酪呻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽玩荠。三九已至漆腌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間阶冈,已是汗流浹背闷尿。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留女坑,地道東北人填具。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像匆骗,于是被迫代替她去往敵國和親劳景。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354