mysql物理備份 xtrabackup

第1章 物理備份 xtrabackup (xbp)

percona公司研發(fā)的MySQL物理備份工具 使用perl語言開發(fā)的

公司官網(wǎng): https://www.percona.com/downloads/Percona-XtraBackup-LATEST/

優(yōu)點: 備份快 原生態(tài)支持增量備份 但是要注意版本 (8.0數(shù)據(jù)庫不支持 需要xbp8.0版本)

1.1 安裝

下載依賴包:

  wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

  yum -y install perl perl-devel libaio libaio-devel perl-Time-HiRes perl-DBD-MySQL libev

下載主體

  yum -y install percona-xtrabackup-24-2.4.4-1.el7.x86_64.rpm

rpm包官網(wǎng)下載

wget https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.12/binary/redhat/7/x86_64/percona-xtrabackup-24-2.4.12-1.el7.x86_64.rpm
數(shù)據(jù)包下載地址:

https://www.percona.com/downloads/XtraBackup/Percona-XtraBackup-2.4.4/binary/redhat/6/x86_64/percona-xtrabackup-24-2.4.4-1.el6.x86_64.rpm

安裝后查看是否成功

innobackupex --version

  innobackupex version 2.4.4 Linux (x86_64) (revision id: df58cf2)#版本信息

1.2 xbk備份原理

1. 自動判斷引擎類型

InnoDB

Non-InnoDB(不是innodb)

2. InnoDB表 實現(xiàn)熱備功能備份

開始備份innoDB時,自動允許進程ckpt,將當(dāng)前已經(jīng)提交的事務(wù)數(shù)據(jù),刷寫到磁盤,會生成一個CKPT的LSN號.(當(dāng)前臟頁錄入過redo的數(shù)據(jù) 刷寫到磁盤數(shù)據(jù)庫中)

拷貝innodb引擎數(shù)據(jù)庫相關(guān)文件 redo(只會拷貝備份期間產(chǎn)生的新的redo),拷貝完成后會產(chǎn)生一個LAST_LSN (備份時刻redo的記錄)

3. 非InnoDB 表

自動開啟 FTWRL (flush tables with read lock) 全局鎖

拷貝數(shù)據(jù)文件.完成后自動解鎖.

1.3 xbp也會鎖表

因為這個特性的原因 xbp在備份系統(tǒng)表的時候 (默認(rèn)系統(tǒng)表不是innodb引擎) 會短暫的鎖表

1.4 增量備份

會基于上一次備份的last_LSN 檢查數(shù)據(jù)頁的變化 然后備份走

1.5 innobackuoex 備份工具應(yīng)用

  1. 編寫mysql配置文件 添加一個[clinet] 加入sock文件
vim /etc/my.cnf

[clinet]

socket=/tmp/mysql.sock

因為默認(rèn)xbp會讀取MySQL的配置文件 但是不會識別指定sock文件選項 所以我們要手動指定一下

5.6 xbk 在innodb表備份恢復(fù)的流程

  1. xbk備份執(zhí)行的瞬間,立即觸發(fā)ckpt,已提交的數(shù)據(jù)臟頁,從內(nèi)存刷寫到磁盤,并記錄此時的LSN號
  2. 備份時响蕴,拷貝磁盤數(shù)據(jù)頁,并且記錄備份過程中產(chǎn)生的redo和undo一起拷貝走,也就是checkpoint LSN之后的日志
  3. 在恢復(fù)之前目木,模擬Innodb“自動故障恢復(fù)”的過程换途,將redo(前滾)與undo(回滾)進行應(yīng)用
  4. 恢復(fù)過程是cp 備份到原來數(shù)據(jù)目錄下

第2章 全備

XBP主要就是一個命令 實現(xiàn)了備份功能

innobackupex --user=root --password=123 /data/backup #將所有數(shù)據(jù)備份到指定目錄

生產(chǎn)中備份姿勢

innobackupex --user=root --password=123 --no-timestamp /data/backup/full_date +%F``

--no-timestamp 取消系統(tǒng)自定義備份名

2.1 全備后DBP添加文件介紹

xtrabackup_binlog_info # 備份時刻binlog日志的節(jié)點

xtrabackup_checkpoints # 記錄備份信息

xtrabackup_info # 關(guān)于備份的其他信息

xtrabackup_logfile # 備份期間產(chǎn)生的的redo信息

[root@db full_2019-11-20]# cat xtrabackup_checkpoints

backup_type = full-prepared

from_lsn = 0 # 0代表所有變化都備份了

to_lsn = 166188857 # ckpt  LSN (臟頁刷寫磁盤后編碼LSN號)

last_lsn = 166188866 # last LSN ( redo編碼 5.7開始 二者相差9)

compact = 0

recover_binlog_info = 0

2.2 增量備份

(1)增量備份的方式,是基于上一次備份進行增量军拟。

(2)增量備份無法單獨恢復(fù)。必須基于全備進行恢復(fù)誓禁。

(3)恢復(fù)時 需要所有增量必須要按順序合并到全備中。

推薦每周全備一次 每天增備

增量備份時會根據(jù)頭一天的xtrabackup_checkpoints文件中的last_lsn數(shù)值進行備份

innobackupex --user=root --password=123 --no-timestamp --incremental --incremental-basedir=/data/backup/full_2019-11-20 /data/backup/inc1

--no-timestamp自定義備份文件名

--incremental

--incremental-basedir= 指定根據(jù)那個備份 進行增備

第3章 恢復(fù)數(shù)據(jù)

模擬項 模擬周三drop了個庫 進行數(shù)據(jù)恢復(fù)

(1)刪掉原來備份

略.

(2)全備(周日)

[root@db01 backup]# innobackupex --user=root --password --no-timestamp /backup/full >&/tmp/xbk_full.log

(3)模擬周一數(shù)據(jù)變化

db01 [(none)]>create database cs charset utf8;

db01 [(none)]>use cs

db01 [cs]>create table t1 (id int);

db01 [cs]>insert into t1 values(1),(2),(3);

db01 [cs]>commit;

(4)第一次增量備份(周一)

innobackupex --user=root --password=123  --no-timestamp --incremental --incremental-basedir=/backup/full /backup/inc1 &>/tmp/inc1.log

(5)模擬周二數(shù)據(jù)

db01 [cs]>create table t2 (id int);

db01 [cs]>insert into t2 values(1),(2),(3);

db01 [cs]>commit;

(6)周二增量

innobackupex --user=root --password=123  --no-timestamp --incremental --incremental-basedir=/backup/inc1 /backup/inc2 &>/tmp/inc2.log

(7)模擬周三數(shù)據(jù)變化

db01 [cs]>create table t3 (id int);

db01 [cs]>insert into t3 values(1),(2),(3);

db01 [cs]>commit;

db01 [cs]>drop database cs;

恢復(fù)思路:

  1. 掛出維護頁摹恰,停止當(dāng)天的自動備份腳本

  2. 檢查備份:周日full+周一inc1+周二inc2辫继,周三的完整二進制日志

3. 進行備份整理(細(xì)節(jié)),截取關(guān)鍵的二進制日志(從備份——誤刪除之前)

4. 測試庫進行備份恢復(fù)及日志恢復(fù)

5. 應(yīng)用進行測試無誤俗慈,開啟業(yè)務(wù)

6. 此次工作的總結(jié)

恢復(fù)流程

  1. 檢查備份

1afe8136-601d-11e9-9022-000c2928f5dd:7-9 GTID

  1. 備份整理(apply-log)+合并備份(full+inc1+inc2)

(1) 全備的整理

[root@db01 one]#innobackupex --apply-log --redo-only /data/backup/full

(2) 合并inc1到full中

[root@db01 one]#innobackupex --apply-log --redo-only --incremental-dir=/data/backup/inc1 /data/backup/full

(3) 合并inc2到full中

[root@db01 one]# innobackupex --apply-log --incremental-dir=/data/backup/inc2 /data/backup/full

(4) 最后一次整理全備

[root@db01 backup]#innobackupex --apply-log /data/backup/full

  1. 截取周二 23:00 到drop 之前的 binlog

[root@db01 inc2]# mysqlbinlog --skip-gtids --include-gtids='1afe8136-601d-11e9-9022-000c2928f5dd:7-9' /data/binlog/mysql-bin.000009 >/data/backup/binlog.sql

  1. 進行恢復(fù)

[root@db01 backup]# mkdir /data/mysql/data2 -p

[root@db01 full]# cp -a * /data/mysql/data2

[root@db01 backup]#chown -R mysql. /data/*

[root@db01 backup]#systemctl stop mysqld

vim /etc/my.cnf

datadir=/data/mysql/data2

systemctl start mysqld

mysql中書寫

Master [(none)]>set sql_log_bin=0;

Master [(none)]>source /data/backup/binlog.sql

Master [(none)]>set sql_log_bin=1;
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末姑宽,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子闺阱,更是在濱河造成了極大的恐慌炮车,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異瘦穆,居然都是意外死亡纪隙,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門扛或,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绵咱,“玉大人,你說我怎么就攤上這事熙兔”妫” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵黔姜,是天一觀的道長拢切。 經(jīng)常有香客問我,道長秆吵,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任五慈,我火速辦了婚禮纳寂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘泻拦。我一直安慰自己毙芜,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布争拐。 她就那樣靜靜地躺著腋粥,像睡著了一般。 火紅的嫁衣襯著肌膚如雪架曹。 梳的紋絲不亂的頭發(fā)上隘冲,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機與錄音绑雄,去河邊找鬼展辞。 笑死,一個胖子當(dāng)著我的面吹牛万牺,可吹牛的內(nèi)容都是我干的罗珍。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼脚粟,長吁一口氣:“原來是場噩夢啊……” “哼覆旱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起核无,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤扣唱,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后堕担,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡霹购,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年齐疙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贞奋。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡轿塔,死狀恐怖仲墨,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情目养,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布幻梯,位于F島的核電站碘梢,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏痘系。R本人自食惡果不足惜饿自,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一昭雌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧佛纫,春花似錦妓局、人聲如沸好爬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽穆桂。三九已至,卻和暖如春享完,著一層夾襖步出監(jiān)牢的瞬間有额,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工倒源, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人热某。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像筹吐,于是被迫代替她去往敵國和親秘遏。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,933評論 2 355

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