备份集过期时间_TiDB备份恢复方式你知多少?
背景
學(xué)習(xí)一款數(shù)據(jù)庫(kù),要學(xué)會(huì)備份和恢復(fù)。備份是一個(gè)嚴(yán)謹(jǐn)?shù)墓ぷ?#xff0c;作為一個(gè)dba,掌握數(shù)據(jù)庫(kù)備份、恢復(fù)的各種手段。
下面讓我們一起來(lái)看看TiDB的備份恢復(fù)有那些手段吧。
基于MVCC的恢復(fù)方式
相關(guān)原理已經(jīng)在上一篇文章寫(xiě)過(guò)了,這里就不在做過(guò)多的描述了。
TiDB用什么保證備份的一致性?
簡(jiǎn)單的回顧一下,TiDB的TiKV里面的MVCC的格式是基于時(shí)間戳的。
(key-versionT(SO全局唯一遞增時(shí)間戳)-->vlues)
會(huì)有定時(shí)GC來(lái)清理過(guò)期的版本(數(shù)據(jù))。
下面的工具都是基于MVCC的方式,假設(shè)數(shù)據(jù)以及被GC清理掉了,那么數(shù)據(jù)就不能恢復(fù)過(guò)來(lái)。
第一款工具 snapshot
TiDB自帶工具,可以針對(duì)當(dāng)前會(huì)話(huà)讀到指定的歷史版本。
UPDATE mysql.tidb SET VARIABLE_VALUE = '80h' WHERE VARIABLE_NAME = 'tikv_gc_life_time';
#更改GC時(shí)間
sql="SET SESSION tidb_snapshot = '415599012634951683'"。
#跳轉(zhuǎn)GC時(shí)間
#微信公眾號(hào)只能傳3個(gè)視頻,我把不能傳的視頻發(fā)百度云盤(pán)了
鏈接:https://pan.baidu.com/s/1QDmFk-9-N-gcNMJr5ZqXzQ
提取碼:anxp
工具說(shuō)明:只能恢復(fù)dml,不能恢復(fù)ddl。
第二款工具 RecoverTiDB自帶工具,可以針對(duì)drop ?table 語(yǔ)句進(jìn)行恢復(fù)。drop table t2;#刪除表
recover table t2; #恢復(fù)表
#微信公眾號(hào)只能傳3個(gè)視頻,我把不能傳的視頻發(fā)百度云盤(pán)了
鏈接:https://pan.baidu.com/s/1QDmFk-9-N-gcNMJr5ZqXzQ
提取碼:anxp
工具限制:只能恢復(fù)drop table的操作,不能恢復(fù)truncate table,delete操作。未來(lái)可能會(huì)被 Flashback取代。
第三款工具?Flashback
TiDB自帶工具,可以針對(duì)truncate操作。
工具限制:只能恢復(fù)truncate,drop等ddl的操作,沒(méi)有辦法恢復(fù)dml操作。工具總結(jié):- 如果使用上述三種工具?要保證誤操作的范圍在GC清理之前。如果數(shù)據(jù)以及被GC清理了,則無(wú)法使用。
- 目前推薦大家要了解掌握上述三種工具的基礎(chǔ)的操作,避免在真正的誤操作發(fā)生的時(shí)候,能快速恢復(fù)。
./bin/mydumper -h 127.0.0.1 -u root -P 4000 #執(zhí)行備份
./bin/loader -d 備份路徑 -h 127.0.0.1 -u root -P 4000 #恢復(fù)備份
#微信公眾號(hào)只能傳3個(gè)視頻,我把不能傳的視頻發(fā)百度云盤(pán)了
鏈接:https://pan.baidu.com/s/1QDmFk-9-N-gcNMJr5ZqXzQ
提取碼:anxp
如果大家嫌棄導(dǎo)入慢,可以用TiDB官方推薦的生態(tài)工具TiDB Lightning 。能給提升TiDB的導(dǎo)入效率。
第二款工具TiDB binlogTiDB binlog,可以用于增量恢復(fù)TiDB集群。還可以適用于 TiDB同步下游TiDB集群、MySQL、Kafka。TiDB binlog分為2個(gè)組件Pump和Drainer 兩個(gè)組件,先給大家介紹一下。Pump組件:- 用于實(shí)時(shí)記錄TiDB產(chǎn)生的Binlog。
- 將binlog按照時(shí)間提交時(shí)間進(jìn)行排序。
- 在提個(gè)給Drainer組件進(jìn)行消費(fèi)。
- 收集各個(gè)Pump中收集的Binlog進(jìn)行歸并。
- 將Binlog轉(zhuǎn)行成SQL或者指定格式的數(shù)據(jù)。
TiDB最近提供的一款分布式備份恢復(fù)工具BR,可以針對(duì)TiDB集群進(jìn)行備份和恢復(fù)。
使用限制:- 只支持TiDBv3.1及以上版本
- 目前需要nfs作為共享磁盤(pán)
- 從pd中獲取當(dāng)前的TSO作為備份快照的時(shí)間點(diǎn)。
- 當(dāng)前集群的TiKV節(jié)點(diǎn)信息。
[2020/04/04 17:16:37.610 +08:00] [INFO] [log-file=/tmp/br.log.2020-04-04T17:16:37+08:00] [pd="[10.206.0.3:2379]"] [storage=local:///export/backup] [timeago=0s]
#說(shuō)明備份日志輸出位置,pd節(jié)點(diǎn),備份結(jié)果集
[2020/04/04 17:16:37.612 +08:00] [INFO] [base_client.go:226] ["[pd] update member urls"] [old-urls="[http://10.206.0.3:2379]"] [new-urls="[http://10.206.0.16:2379,http://10.206.0.3:2379,http://10.206.0.6:2379]"]
#獲取整個(gè)pd集群
[2020/04/04 17:16:37.622 +08:00] [INFO] [ddl.go:321] ["[ddl] start DDL"] [ID=b823eca8-e3e5-4969-a67f-5ff3b6210d1d] [runWorker=false]
[2020/04/04 17:16:37.647 +08:00] [INFO] [domain.go:144] ["full load InfoSchema success"] [usedSchemaVersion=0] [neededSchemaVersion=87] ["start time"=5.263313ms]
[2020/04/04 17:16:37.648 +08:00] [INFO] [domain.go:368] ["full load and reset schema validator"]
#獲取對(duì)應(yīng)的表結(jié)構(gòu)
[2020/04/04 17:16:37.650 +08:00] [INFO] [client.go:112] ["backup encode timestamp"] [BackupTS=415758233800278018]
#獲取備份的時(shí)間點(diǎn)tso
[2020/04/04 17:16:37.657 +08:00] [INFO] [client.go:222] ["change table AutoIncID"] [db=tian] [table=t1] [AutoIncID=2000001]
#開(kāi)始執(zhí)行db為tian,table為t1的備份
這段話(huà)來(lái)自官方文檔,我簡(jiǎn)單的描述,大家會(huì)更好的理解。此時(shí)根據(jù)備份子命令,會(huì)有兩種備份邏輯:
全量備份:BR 遍歷全部庫(kù)表,并且根據(jù)每一張表構(gòu)建需要備份的 KV Range
單表備份:BR 根據(jù)該表構(gòu)建需要備份的 KV Range
最后,BR 將需要備份的 KV Range 收集后,構(gòu)造完整的備份請(qǐng)求分發(fā)給集群內(nèi)的 TiKV 節(jié)點(diǎn)。
https://pingcap.com/docs-cn/dev/reference/tools/br/br/
- 每個(gè)Region都有Region Leader,每個(gè)Region Leader都分布在不同的TiKV上。
- BR 首先知道備份哪些KV Range,然后把備份的KV Range收集后。構(gòu)建一個(gè)完整的備份請(qǐng)求,下發(fā)給所有的TiKV節(jié)點(diǎn)。
- TiKV收到這些備份請(qǐng)求,開(kāi)始執(zhí)行備份命令。
[2020/04/04 19:17:30.808 +08:00] [INFO] ["Full backup Success summary: total backup ranges: 15,total success: 15, total failed: 0, total take(s): 544.32, total kv: 285323076, total size(MB): 58774.74, avg speed(MB/s): 107.98"]["backup checksum"=1m51.113016071s]["backup fast checksum"=59.215757ms]["backup total regions"=699]備份時(shí)性能影響:br備份影響相對(duì)較小,因?yàn)閭浞葜噶疃枷掳l(fā)到不同的TiKV節(jié)點(diǎn),TiKV會(huì)承擔(dān)備份壓力。
總結(jié)相信大家看了這么多內(nèi)容,大家應(yīng)該會(huì)TiDB備份恢復(fù)方式有了一定的了解。可以對(duì)集群設(shè)置N個(gè)小時(shí)的GC超時(shí)時(shí)間:沒(méi)超過(guò)這N個(gè)小時(shí)的誤操作,可以通過(guò)基于MVCC的方式進(jìn)行恢復(fù)。可以根據(jù)不同的語(yǔ)句來(lái),選擇不同的恢復(fù)方式。如果超過(guò)了N個(gè)小時(shí),可以選擇binlog的方式進(jìn)行增量恢復(fù)。mydumper和br工具,我個(gè)人感覺(jué)更適合- 災(zāi)難式恢復(fù)(整個(gè)集群都掛了,例如所有磁盤(pán)壞了,機(jī)柜宕機(jī)。但TiDB本身就是分布式,所以這個(gè)可能性不大。
- 構(gòu)建新的集群,做集群之間的同步。
總結(jié)
以上是生活随笔為你收集整理的备份集过期时间_TiDB备份恢复方式你知多少?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 猫眼石手镯一般多少钱
- 下一篇: windows优化大师8周年纪念版_《数