數(shù)據(jù)庫(kù)是每個(gè)企業(yè)的重中之重,存儲(chǔ)著公司業(yè)務(wù)數(shù)據(jù),一旦出現(xiàn)永久性損壞,對(duì)公司的打擊會(huì)是災(zāi)難性的(從這兩年刪庫(kù)跑路,企業(yè)經(jīng)受的損失就可以感知)。分布式數(shù)據(jù)庫(kù)雖然采用數(shù)據(jù)多副本備份機(jī)制來(lái)保證數(shù)據(jù)的可靠性,但同樣也會(huì)面臨多副本丟失的風(fēng)險(xiǎn)。災(zāi)難出現(xiàn)如何快速恢復(fù)也是DBA需要面對(duì)的問(wèn)題,本案通過(guò)對(duì)具體示例的理解與操作介紹了分布式NEWSQL數(shù)據(jù)庫(kù)Tidb對(duì)多副本丟失的問(wèn)題的處理。
TiDB 集群主要包括三個(gè)核心組件:TiDBServer,PDServer 和 TiKVServer。
TiDBServer
TiDB Server 負(fù)責(zé)接收 SQL請(qǐng)求,處理 SQL相關(guān)的邏輯,并通過(guò) PD找到存儲(chǔ)計(jì)算所需數(shù)據(jù)的TiKV 地址,與TiKV 交互獲取數(shù)據(jù),最終返回結(jié)果。TiDBServer 是無(wú)狀態(tài)的,其本身并不存儲(chǔ)數(shù)據(jù),只負(fù)責(zé)計(jì)算,可以無(wú)限水平擴(kuò)展,可以通過(guò)負(fù)載均衡組件(如LVS、HAProxy或 F5)對(duì)外提供統(tǒng)一的接入地址。
PDServer
Placement Driver (簡(jiǎn)稱(chēng) PD)是整個(gè)集群的管理模塊,其主要工作有三個(gè):一是存儲(chǔ)集群的元信息(某個(gè)Key 存儲(chǔ)在哪個(gè)TiKV 節(jié)點(diǎn));二是對(duì)TiKV 集群進(jìn)行調(diào)度和負(fù)載均衡(如數(shù)據(jù)的遷移、Raftgroup leader 的遷移等);三是分配全局唯一且遞增的事務(wù)ID。PD 通過(guò) Raft協(xié)議保證數(shù)據(jù)的安全性。Raft的 leaderserver 負(fù)責(zé)處理所有操作,其余的PD server 僅用于保證高可用。
TiKVServer
TiKV Server 負(fù)責(zé)存儲(chǔ)數(shù)據(jù),從外部看TiKV 是一個(gè)分布式的提供事務(wù)的Key-Value 存儲(chǔ)引擎。存儲(chǔ)數(shù)據(jù)的基本單位是Region,每個(gè)Region 負(fù)責(zé)存儲(chǔ)一個(gè)Key Range(從StartKey 到EndKey 的左閉右開(kāi)區(qū)間)的數(shù)據(jù),每個(gè)TiKV 節(jié)點(diǎn)會(huì)負(fù)責(zé)多個(gè)Region。TiKV使用 Raft協(xié)議做復(fù)制,保持?jǐn)?shù)據(jù)的一致性和容災(zāi)。副本以Region 為單位進(jìn)行管理,不同節(jié)點(diǎn)上的多個(gè)Region 構(gòu)成一個(gè)Raft Group,互為副本。數(shù)據(jù)在多個(gè)TiKV 之間的負(fù)載均衡由PD 調(diào)度,這里也是以Region 為單位進(jìn)行調(diào)度。
TiDB 默認(rèn)配置為3 副本,每一個(gè)Region 都會(huì)在集群中保存3 份,它們之間通過(guò)Raft 協(xié)議來(lái)選舉Leader 并同步數(shù)據(jù)。Raft協(xié)議可以保證在數(shù)量小于副本數(shù)(注意,不是節(jié)點(diǎn)數(shù))一半的節(jié)點(diǎn)掛掉或者隔離的情況下,仍然能夠提供服務(wù),并且不丟失任何數(shù)據(jù)。圖1中紫色部分為3副本的region。
對(duì)于 3副本集群,掛掉一個(gè)節(jié)點(diǎn)除了可能會(huì)導(dǎo)致性能有抖動(dòng)之外,可用性和正確性理論上不會(huì)受影響;但是掛掉 2個(gè)副本,一些region 就會(huì)不可用,而且如果這2個(gè)副本無(wú)法完整地找回了,還存在永久丟失部分?jǐn)?shù)據(jù)的可能。
圖1
在實(shí)際生產(chǎn)環(huán)境中,TiDB集群是可能會(huì)出現(xiàn)丟失數(shù)據(jù)情況,如:
一個(gè) TiDB 集群可能會(huì)出現(xiàn)多臺(tái) TiKV 機(jī)器短時(shí)間內(nèi)接連故障且無(wú)法短期內(nèi)恢復(fù)
一個(gè)雙機(jī)房部署的 TiDB 集群的其中一個(gè)機(jī)房整體故障等
在上述這些情形下,會(huì)出現(xiàn)部分Region的多個(gè)副本(包含全部副本的情況)同時(shí)故障,進(jìn)而導(dǎo)致Region的數(shù)據(jù)部分或全部丟失的問(wèn)題。這個(gè)時(shí)候,最重要的是快速地最大程度地恢復(fù)數(shù)據(jù)并恢復(fù)TiDB 集群正常服務(wù)。
本次演練采用較新的數(shù)據(jù)庫(kù)軟件版本v4.0.0-rc,主要關(guān)注Tikv中region的處理,此架構(gòu)設(shè)計(jì)時(shí)將PD、TIDB、監(jiān)控部署在一臺(tái)機(jī)器之上,并未做冗余處理,Tikv選擇5臺(tái)機(jī)器,采用Tiup進(jìn)行部署。下圖為部署設(shè)計(jì):
為更好的理解,我們將以擁有三百萬(wàn)條數(shù)據(jù)的t_user表作為操作的對(duì)象,在測(cè)試環(huán)境中模擬兩副本以及三副本丟失的災(zāi)難場(chǎng)景,并進(jìn)行對(duì)應(yīng)的數(shù)據(jù)災(zāi)難恢復(fù)。
T_user表結(jié)構(gòu):
CreateTable: CREATE TABLE `t_user` (
`id` int(11) NOT NULL,
`c_user_id` varchar(36) DEFAULT NULL,
`c_name` varchar(22) DEFAULT NULL,
`c_province_id` int(11) DEFAULT NULL,
`c_city_id` int(11) DEFAULT NULL,
`create_time` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
查看t_user表在store的分布:
SHOWTABLE REGIONS 語(yǔ)句用于顯示TiDB 中某個(gè)表的Region 信息。
從信息可以發(fā)現(xiàn),t_user表有四個(gè)region,但是SQL命令未能詳細(xì)列出region在不同的store上的分布,例如region的leader以及folloer如何在store進(jìn)行分布,這里信息有助于我們更好理解region的分布。
通過(guò)pd-ctl工具可以找到更加詳細(xì)的信息:
[root@tidb1bin]# ./pd-ctl -i -u http://172.16.134.133:2379
?region 4009
{
"id": 4009,
"start_key":"7480000000000000FF4D5F728000000000FF224A9A0000000000FA",
"end_key": "",
"epoch": {
"conf_ver": 23,
"version": 36
},
"peers": [
{
"id": 4010,
"store_id": 5
},
{
"id": 4011,
"store_id": 6
},
{
"id": 4012,
"store_id": 4
}
],
"leader": {
"id": 4010,
"store_id": 5
},
"written_bytes": 0,
"read_bytes": 0,
"written_keys": 0,
"read_keys": 0,
"approximate_size": 99,
"approximate_keys": 773985
}
為更好的理解,根據(jù)以上的多個(gè)region信息我們可以繪制針對(duì)表t_user的數(shù)據(jù)region的分布圖:
結(jié)合表t_user的region分布圖,我們可以推論出如下的情況:
1、如果只宕掉一臺(tái)機(jī)器:
由于是三副本集群,始終只有一個(gè)副本或者沒(méi)有副本掛掉,tikv可用性和正確性理論上不會(huì)受影響。
2、如果同時(shí)宕掉兩臺(tái)機(jī)器:
三副本集群中,存在只有一個(gè)副本掛掉,也會(huì)存在兩個(gè)副本同時(shí)掛掉的情況,當(dāng)然只用一個(gè)副本掛掉,Tikv可用性和正確性理論上不會(huì)受影響。當(dāng)有兩個(gè)副本掛掉,Tikv集群將不可用。
例如:在此例中,宕掉Tikv2135和宕掉Tikb5138這兩臺(tái)機(jī)器,只有兩個(gè)region的一個(gè)副本掛掉,并不會(huì)影響到整個(gè)集群,但是如果是宕掉Tikv3136和Tikv4137,則會(huì)出現(xiàn)兩個(gè)region的兩個(gè)副本均掛掉,對(duì)此表的SQL無(wú)法查詢(xún),但由于還有一個(gè)副本的存在,通過(guò)復(fù)制幸存的副本進(jìn)行復(fù)制并重新進(jìn)行Leader的選舉進(jìn)行災(zāi)難恢復(fù)后數(shù)據(jù)任然能夠被找回,當(dāng)然可能掛掉的兩個(gè)副本其中一個(gè)為L(zhǎng)eader,部分?jǐn)?shù)據(jù)未能從Leader同步到Follower則存在有少量未提交的數(shù)據(jù)的丟失。
3、如果同時(shí)宕掉三臺(tái)或更多機(jī)器:
理論上,一、二、三個(gè)副本掛掉的情況都有可能出現(xiàn),然而會(huì)出現(xiàn)最為嚴(yán)重的情況,即為三副本的數(shù)據(jù)全部丟失,整個(gè)表的數(shù)據(jù)會(huì)因?yàn)槟硞€(gè)region的丟失而出現(xiàn)數(shù)據(jù)庫(kù)災(zāi)難恢復(fù)后表數(shù)據(jù)的丟失。例如如果是宕掉Tikv1 134、Tikv2135和Tikv3136,會(huì)出現(xiàn)region的兩副本掛掉的情況,通過(guò)災(zāi)難恢復(fù)可以找回,但是如果掛掉的是Tikv1 134、Tikv3136和Tikv4137,將會(huì)有2個(gè)region的所有副本均丟失的情況,數(shù)據(jù)將出現(xiàn)丟失。
這里我們只是以一張表的region分布為例,實(shí)際環(huán)境中,表的region分布遠(yuǎn)比此復(fù)雜,在三副本設(shè)置的情況下,同時(shí)兩臺(tái)主機(jī)宕掉的情況下,出現(xiàn)兩副本丟失的概率還是較大,當(dāng)然實(shí)際生產(chǎn)中同時(shí)宕掉兩臺(tái)機(jī)器的情況較小,如果對(duì)容災(zāi)有更高要求,也可以選擇五副本。
副本數(shù)據(jù)恢復(fù)包含兩個(gè)部分:故障Region 處理和丟失數(shù)據(jù)處理故障 Region處理,針對(duì) Region數(shù)據(jù)丟失的嚴(yán)重情況,可分為兩種:
Region 至少還有 1個(gè)副本,恢復(fù)思路是在Region的剩余副本上移除掉所有位于故障節(jié)點(diǎn)上的副本,這樣可以用這些剩余副本來(lái)重新選舉和補(bǔ)充副本來(lái)恢復(fù),但這些剩余副本中可能不包含最新的Raft Log 更新,這個(gè)時(shí)候就會(huì)丟失部分?jǐn)?shù)據(jù)Region 的所有副本都丟失了,這個(gè)Region 的數(shù)據(jù)就丟失了,無(wú)法恢復(fù)。
可以通過(guò)創(chuàng)建1 個(gè)空 Region來(lái)解決 Region不可用的問(wèn)題在恢復(fù) Region故障的過(guò)程中,要詳細(xì)記錄下所處理Region 的信息,如Region ID、Region丟失副本的數(shù)量等丟失數(shù)據(jù)處理
根據(jù)故障 RegionID 找到對(duì)應(yīng)的表,找到相關(guān)用戶(hù)并詢(xún)問(wèn)用戶(hù)在故障前的某一段時(shí)間內(nèi)(比如5 min),大概寫(xiě)入了哪些數(shù)據(jù)表,是否有DDL 操作,是否可以重新消費(fèi)更上游的數(shù)據(jù)來(lái)再次寫(xiě)入,等等。
如果可以重導(dǎo),則是最簡(jiǎn)單的處理方式。否則的話(huà),則只能對(duì)重要的數(shù)據(jù)表,檢查數(shù)據(jù)索引的一致性,保證還在的數(shù)據(jù)是正確無(wú)誤的。至此我們對(duì)Tidb副本的作用以及限制有也一定的了解,接下來(lái)我們會(huì)對(duì)region的兩副本丟失和三副本丟失的場(chǎng)景進(jìn)行演練,下回見(jiàn)。
參考文檔https://book.tidb.io/session3/chapter5/recover-quorum.html
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/130204.html
摘要:為云計(jì)算災(zāi)難做好準(zhǔn)備要為云計(jì)算災(zāi)難做好準(zhǔn)備,企業(yè)需要不斷測(cè)試其數(shù)據(jù)恢復(fù)框架。與內(nèi)部部署的災(zāi)難恢復(fù)相比,云計(jì)算災(zāi)難恢復(fù)更加簡(jiǎn)單。云計(jì)算災(zāi)難恢復(fù)的最佳實(shí)踐選擇合適的災(zāi)難恢復(fù)計(jì)劃方法要制定合適的災(zāi)難恢復(fù)計(jì)劃,企業(yè)了解其基礎(chǔ)設(shè)施非常重要??紤]到當(dāng)今商業(yè)環(huán)境中采用的云計(jì)算技術(shù)迅速增加,從導(dǎo)致服務(wù)中斷和停機(jī)的災(zāi)難中有效恢復(fù)的能力變得更加重要?;谠朴?jì)算的災(zāi)難恢復(fù)可以確保企業(yè)在盡可能短的時(shí)間內(nèi)恢復(fù)其數(shù)據(jù)和...
摘要:基于云遷移的三個(gè)階段細(xì)分為八個(gè)主要步驟,評(píng)估階段主要包括項(xiàng)目啟動(dòng)現(xiàn)狀梳理以及應(yīng)用系統(tǒng)關(guān)聯(lián)關(guān)系分析三個(gè)步驟,設(shè)計(jì)階段包括云架構(gòu)優(yōu)化設(shè)計(jì)和云遷移方案設(shè)計(jì),實(shí)施階段包括目標(biāo)架構(gòu)遷移演練及實(shí)施和試運(yùn)行三個(gè)步驟。 在云計(jì)算市場(chǎng)規(guī)模不斷擴(kuò)大的大背景下,云遷移的需求越來(lái)越大且面臨挑戰(zhàn)。云遷移不是一個(gè)遷移軟件工具,而是一種服務(wù)。前IBM資深架構(gòu)師姜亞杰從云遷移的三個(gè)階段、四個(gè)維度到八個(gè)步驟的方法,簡(jiǎn)述...
摘要:物聯(lián)網(wǎng)也影響著數(shù)據(jù)中心的安全性,主要是隨著資源和數(shù)據(jù)數(shù)量和質(zhì)量的增長(zhǎng),人們?cè)黾恿藢?duì)數(shù)據(jù)中心安全性的需求。新的物聯(lián)網(wǎng)設(shè)備是和執(zhí)行數(shù)據(jù)分析的其他系統(tǒng)的常見(jiàn)補(bǔ)充,這些設(shè)備會(huì)導(dǎo)致網(wǎng)絡(luò)使用和需求增加。網(wǎng)絡(luò)威脅對(duì)于數(shù)據(jù)中心來(lái)說(shuō)是一個(gè)不幸的現(xiàn)實(shí),這些數(shù)據(jù)中心在防止違規(guī)事件方面面臨許多挑戰(zhàn)。近年來(lái),這種風(fēng)險(xiǎn)一直在增加,超過(guò)40%的受訪(fǎng)者在Carbonite公司進(jìn)行的調(diào)查報(bào)告中表示,所面臨的黑客、勒索軟件和其...
摘要:在全世界的聚焦之下,為年倫敦奧運(yùn)會(huì)運(yùn)行基礎(chǔ)設(shè)施的團(tuán)隊(duì)將更多重點(diǎn)放在了可靠性上,而不會(huì)展示尖端技術(shù)。這意味著熱門(mén)技術(shù)例如云計(jì)算將不會(huì)成為奧運(yùn)會(huì)基礎(chǔ)設(shè)施的核心部分。表示,每屆奧運(yùn)會(huì)相隔四年,這使確?;A(chǔ)設(shè)施保持狀況成為非常棘手的事情。 在全世界的聚焦之下,為2012年倫敦奧運(yùn)會(huì)運(yùn)行IT基礎(chǔ)設(shè)施的團(tuán)隊(duì)將更多重點(diǎn)放在了可靠性上,而不會(huì)展示尖端技術(shù)。? 這意味著熱門(mén)技術(shù)(例如云計(jì)算)將不會(huì)成為奧運(yùn)會(huì)I...
摘要:日前,廣東華興銀行總行與科華恒盛就總行災(zāi)備數(shù)據(jù)中心規(guī)劃建設(shè)展開(kāi)深入合作。項(xiàng)目建成后將全面提升廣東華興銀行數(shù)據(jù)安全保障及運(yùn)維服務(wù)水平,為其總行全球業(yè)務(wù)提供小時(shí)不間斷的同城災(zāi)備服務(wù),為銀行業(yè)務(wù)穩(wěn)定運(yùn)行實(shí)現(xiàn)高速增長(zhǎng)奠定牢固的信息化基礎(chǔ)。隨著云計(jì)算、大數(shù)據(jù)等新ICT技術(shù)的高速發(fā)展,銀行業(yè)信息化建設(shè)的步伐愈行愈快。日前,廣東華興銀行總行與科華恒盛就總行災(zāi)備數(shù)據(jù)中心規(guī)劃建設(shè)展開(kāi)深入合作。科華恒盛將為其提...
閱讀 1356·2023-01-11 13:20
閱讀 1707·2023-01-11 13:20
閱讀 1215·2023-01-11 13:20
閱讀 1906·2023-01-11 13:20
閱讀 4165·2023-01-11 13:20
閱讀 2757·2023-01-11 13:20
閱讀 1402·2023-01-11 13:20
閱讀 3671·2023-01-11 13:20