8 增量備份xtrabackup

增量備份xtrabackup

MySQL 備份工具

物理備份缺點(diǎn)

  1. 跨平臺(tái)性差
  2. 備份時(shí)間長(zhǎng),冗余備份,浪費(fèi)存儲(chǔ)空間

mysqldump 備份缺點(diǎn)

  1. 效率較低,備份和還原速度慢
  2. 備份過程中,數(shù)據(jù)插入和更新操作會(huì)被掛起

XtraBackup工具

優(yōu)點(diǎn)

  1. 備份過程中不鎖庫表,適合生產(chǎn)環(huán)境
  2. 由專業(yè)組織Percona提供( 改進(jìn)MySQL分支 )

主要組件

  1. xtrabackup: C程序,支持InnoDB/XtraDB
  2. innobackupex: 以Perl腳本封裝xtrabackup,支持MyISAM

安裝 Xtrabackup

通過官方源安裝

#安裝Percona官方源
yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm
#安裝 xtrabackup 2.4版本,不同版本支持不同版本的MySQL
yum install  percona-xtrabackup-24 -y
#查看版本
xtrabackup --version

xtrabackup: recognized server arguments: --server-id=101 --log_bin=/logdir/rz --datadir=/var/lib/mysql
xtrabackup version 2.4.13 based on MySQL server 5.7.19 Linux (x86_64) (revision id: 3e7ca7c)

#查看安裝rpm包
rpm -qa |grep percona
#查看RPM包安裝文件
rpm -ql percona-xtrabackup-24

基本參數(shù)

常用選項(xiàng) 含義
--host 主機(jī)名
--user 用戶名
--port 端口號(hào)
--password 密碼
--databases 數(shù)據(jù)庫名
--no-timestamp 不用日期命名備份文件存儲(chǔ)的子目錄名
多庫語法 說明
--databases="庫名" 單個(gè)庫
--databases="庫1 庫2" 多個(gè)庫
--databases="庫.表" 單個(gè)表

進(jìn)階參數(shù)

常用選項(xiàng) 含義
--redo-only 日志合并
--apply-log 準(zhǔn)備還原(回滾日志)
--copy-back 恢復(fù)數(shù)據(jù)
--incremental 目錄名 增量備份
--incrementtal-basedir=目錄名 增量備份時(shí),指定上一次備份數(shù)據(jù)存儲(chǔ)的目錄名
--incremental-dir=目錄名 準(zhǔn)備恢復(fù)數(shù)據(jù)時(shí),指定增量備份數(shù)據(jù)存儲(chǔ)的目錄名
--export 導(dǎo)出表信息
--import 導(dǎo)出表空間

Innobackupex應(yīng)用案例

完全備份

  1. 將所有庫完全備份到 /backup
innobackupex --user root --password 123123 /allbak [--no-timestamp]

xtrabackup 不能備份MySIAM表

innobackupex 封裝了xtrabackup,可以增量備份 innodb ,但是mysiam是全量備份

  1. 備份指定庫
innobackupex --user root --password 123123 --databases="buydb mysql" /twodbbak [--no-timestamp]
  1. 備份指定表所有數(shù)據(jù)
innobackupex --user root --password 123123 --databases="buydb.a" /opt/a --no-timestamp
  1. 要求數(shù)據(jù)庫目錄為空,才可以恢復(fù)數(shù)據(jù).生產(chǎn)環(huán)境一般使用全備.恢復(fù)時(shí),缺少系統(tǒng)三個(gè)庫時(shí)會(huì)無法啟動(dòng).
innobackupex --user root --password 123123 --databases="mysql sys performance_schema buydb" /opt/buydbfull --no-timestamp

完全恢復(fù)

要求數(shù)據(jù)庫目錄為空

  1. 重做日志 --apply-log
  2. 恢復(fù)數(shù)據(jù) --copy-back
  3. 重啟數(shù)據(jù)庫服務(wù)
#重做日志 
innobackupex --user root --password 123123 --apply-log /opt/buydbfull/

#xtrabackup_checkpoints 文件中 backup_type 會(huì)從 backed變化為 prepared
cat /opt/buydbfull/xtrabackup_checkpoints 
backup_type = full-prepared

#停止數(shù)據(jù)庫,清空數(shù)據(jù)目錄,否則無法恢復(fù)
systemctl stop mysqld
rm -rf /var/lib/mysql/*

#恢復(fù)數(shù)據(jù),修改文件所有者
innobackupex --copy-back /opt/buydbfull/
chown -R mysql. /var/lib/mysql

#啟動(dòng)mysqld,查看
systemctl start mysqld

增量備份

做首次備份(完全備份)

innobackupex --user root --password 123123 --databases="mysql sys performance_schema buydb" /fullbuydb --no-timestamp

寫入新數(shù)據(jù),第一次增量備份

--incremental 執(zhí)行增量備份文件存儲(chǔ)目錄

--incremental-basedir= 上次備份文件存儲(chǔ)目錄

innobackupex --user root --password 123123 --databases="mysql sys performance_schema buydb" --incremental /new1dir --incremental-basedir=/fullbuydb --no-timestamp

寫入新數(shù)據(jù),第二次增量備份

innobackupex --user root --password 123123 --databases="mysql sys performance_schema buydb" --incremental /new2dir --incremental-basedir=/new1dir --no-timestamp

生產(chǎn)環(huán)境中定時(shí)執(zhí)行,

00 23 * * 1 /shell/allbak.sh    完全備份innobackupex,每周1執(zhí)行
00 23 * * 2-7 /shell/newdata.sh 增量備份innobackupex,周二到周日?qǐng)?zhí)行

工作原理 innodb 和 xtrdb 有效

增量備份工作原理

事務(wù)日志文件的LSN,每次增量備份都會(huì)記錄每次的LSN范圍值.

ib_logfile0 正確完成的sql命令

ib_logfile1 正確完成的sql命令

ibdata1 未提交的sql命令

LSN 日志序列號(hào) 增量備份lsn記錄在 xtrabackup_checkpoints

每一條命令有一個(gè) LSN

增量恢復(fù)

--incremental-dir= 增量備份目錄名

  1. 重做并合并日志 --apply-log --redo-only

  2. 停止服務(wù),清空數(shù)據(jù)目錄

  3. 恢復(fù)數(shù)據(jù)

#合并增量備份的日志,范圍取自 lsn值
innobackupex --apply-log --redo-only /fullbuydb/
innobackupex --apply-log --redo-only /fullbuydb/ --incremental-dir=/new1dir
innobackupex --apply-log --redo-only /fullbuydb/ --incremental-dir=/new2dir
#停止服務(wù)清空數(shù)據(jù)目錄
systemctl stop mysqld
rm -rf /var/lib/mysql/*

#恢復(fù)數(shù)據(jù)
innobackupex --copy-back /fullbuydb/
chown mysql. /var/lib/mysql -R
systemctl start mysqld

完全備份文件中恢復(fù)某個(gè)表

--export 導(dǎo)出表信息

恢復(fù)步驟

  1. 從備份數(shù)據(jù)利導(dǎo)出表信息.
#全備中導(dǎo)出buydb庫下表信息
innobackupex --apply-log --export /buydbfull2 --no-timestamp

#查看buydb庫備份文件,新增 后綴為 .cfg 和 .exp 表信息文件
ls /buydbfull2/buydb/
a.cfg  a.exp  a.frm  a.ibd  b.cfg  b.exp  b.frm  b.ibd  db.opt
  1. 創(chuàng)建刪除的表( 表結(jié)構(gòu)要和刪除時(shí)相同 )
mysql> create table b(name char(10));
  1. 刪除表空間

alter table 庫名.表名 discard tablespace;

mysql> alter table buydb.b discard tablespace;
  1. 把導(dǎo)出的表信息文件拷貝到數(shù)據(jù)庫目錄下
cp /buydbfull2/buydb/b.{cfg,exp,ibd} /var/lib/mysql/buydb/
  1. 修改所有者
chown mysql. -R /var/lib/mysql
  1. 導(dǎo)入表空間

alter table 庫名.表名 import tablespace;

mysql> alter table buydb.b import tablespace;
  1. 驗(yàn)證查看數(shù)據(jù),刪除無用表信息文件
mysql> select * from buydb.b;
rm -rf /var/lib/mysql/buydb/b.{exp,cfg};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末玛荞,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌永乌,老刑警劉巖橙弱,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異钞脂,居然都是意外死亡揣云,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門冰啃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來邓夕,“玉大人,你說我怎么就攤上這事阎毅》俑眨” “怎么了?”我有些...
    開封第一講書人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵扇调,是天一觀的道長(zhǎng)矿咕。 經(jīng)常有香客問我,道長(zhǎng),這世上最難降的妖魔是什么碳柱? 我笑而不...
    開封第一講書人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任捡絮,我火速辦了婚禮,結(jié)果婚禮上莲镣,老公的妹妹穿的比我還像新娘福稳。我一直安慰自己,他們只是感情好瑞侮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開白布的圆。 她就那樣靜靜地躺著,像睡著了一般半火。 火紅的嫁衣襯著肌膚如雪越妈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,590評(píng)論 1 305
  • 那天慈缔,我揣著相機(jī)與錄音叮称,去河邊找鬼。 笑死藐鹤,一個(gè)胖子當(dāng)著我的面吹牛瓤檐,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播娱节,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼挠蛉,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了肄满?” 一聲冷哼從身側(cè)響起谴古,我...
    開封第一講書人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎稠歉,沒想到半個(gè)月后掰担,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡怒炸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年带饱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阅羹。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡勺疼,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捏鱼,到底是詐尸還是另有隱情执庐,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布导梆,位于F島的核電站轨淌,受9級(jí)特大地震影響迂烁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜猿诸,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一婚被、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧梳虽,春花似錦址芯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至禀挫,卻和暖如春旬陡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背语婴。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工描孟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人砰左。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓匿醒,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親缠导。 傳聞我的和親對(duì)象是個(gè)殘疾皇子廉羔,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

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