TiDB中kv的擴(kuò)容和縮容

下面是本次測(cè)試環(huán)境服務(wù)器的概況,一共四臺(tái)機(jī),其中三個(gè)KV妓笙。按照默認(rèn)的副本數(shù),一共有三個(gè)能岩,也就是說可以允許我的KV能掛掉一個(gè)而不影響業(yè)務(wù)寞宫。下面我們來測(cè)試一下三種的情況:

  1. 在三個(gè)kv的情況下,直接掛掉一個(gè)看下服務(wù)是否還正常拉鹃。
  2. 擴(kuò)容一個(gè)kv辈赋,看下regions和 leader的轉(zhuǎn)移的情況。
  3. 縮容一個(gè)kv膏燕,看下regions和 leader的轉(zhuǎn)移的情況钥屈,并查看能不能縮容成功。
組件 CPU 內(nèi)存 IP地址 主機(jī)名
TiDB 2核+ 4 GB+ 192.168.113.20 tidb01
PD 2核+ 4 GB+ 192.168.113.20 tidb01
TiKV 2核+ 4 GB+ 192.168.113.21 tikv01
TiKV 2核+ 4 GB+ 192.168.113.22 tikv02
TiKV 2核+ 4 GB+ 192.168.113.23 tikv03

1.1 模擬一個(gè)kv宕機(jī)的情況

我們的測(cè)試方法很簡(jiǎn)單坝辫,首先新建一個(gè)測(cè)試表并插入數(shù)據(jù)篷就;然后直接kill掉kv的進(jìn)程,模擬宕機(jī)近忙;然后再登錄TiDB看下數(shù)據(jù)是否還在竭业,能否做插入、刪除的操作银锻。

  1. 新建測(cè)試表永品,并插入數(shù)據(jù)做鹰。
use test;
create table tb_test1 (
id int,
user_name VARCHAR(20)
)

insert into tb_test1 VALUES (1,'test1');
insert into tb_test1 VALUES (2,'test2');
insert into tb_test1 VALUES (3,'test3');

select查詢確認(rèn)數(shù)據(jù)

select * from tb_test;

這時(shí)候我們看grafana的tv監(jiān)控頁(yè)面击纬,看到leader的分布是很不均勻的,這里我們不探討钾麸。下面我們把tikv_2給kill了看下更振。


grafana監(jiān)控面板的顯示內(nèi)容
  1. kill掉tikv進(jìn)程模擬tikv掛掉的情況


    主機(jī)名與實(shí)例名稱的對(duì)應(yīng)關(guān)系

在這里我們要kill的是tikv_2,這里剛好對(duì)應(yīng)的是我的tikv主機(jī)IP較小的那個(gè)(192.168.113.21)

ps aux |grep tikv-server|grep -v grep|awk '{print $2}'|xargs kill

這樣kill掉之后饭尝,很快tikv會(huì)自己重啟啟動(dòng)的肯腕,這樣的沒辦法很好地測(cè)試的。所以干脆钥平,我直接把tikv_1的服務(wù)器給shutdown了实撒,看下是什么樣的一個(gè)情況。
在grafana的監(jiān)控面板上我們可以看到有一個(gè)tikv down了,還有該服務(wù)器上的探測(cè)器知态。



我們看下tikv的leader的情況捷兰,可以看到已經(jīng)有部分的leader轉(zhuǎn)移到tikv_1和tikv_7上了,我們看下那個(gè)測(cè)試表的數(shù)據(jù)负敏。

在掛了一個(gè)kv的情況下贡茅,還是可以正常地插入和刪除數(shù)據(jù)的,也就是說TIDB還是正常運(yùn)作的其做。

select * from tb_test1;
insert into tb_test1 VALUES (4,'test4');
delete from tb_test1 where id=1;
select * from tb_test1;

測(cè)試結(jié)束后我們開啟虛擬機(jī)顶考,并重新把tikv01上的tikv的服務(wù)打開。

ansible-playbook start.yml -l 192.168.113.21

啟動(dòng)后我們還發(fā)現(xiàn)了kv的leader并沒有轉(zhuǎn)移回給tikv_2上妖泄,leader的分布還是很不均勻驹沿。

1.2 擴(kuò)容一個(gè)Tikv

這里我們新增一個(gè)kv,新增的一個(gè)虛擬機(jī)的配置情況如下

組件 CPU 內(nèi)存 IP地址 主機(jī)名
Tikv 2核+ 4 GB+ 192.168.113.24 tikv04
  1. 新增tikv實(shí)例
    編輯hosts.ini以及inventory.ini文件蹈胡,增加一個(gè)tikv的IP地址甚负。
[servers]
192.168.113.20
192.168.113.21
192.168.113.22
192.168.113.23
192.168.113.24
...
[tikv_servers]
192.168.113.21
192.168.113.22
192.168.113.23
192.168.113.24
...
[monitored_servers]
192.168.113.20
192.168.113.21
192.168.113.22
192.168.113.23
192.168.113.24
...

使用ansible來初始化并部署tikv


#新建tidb用戶
ansible-playbook -i hosts.ini -l 192.168.113.24 create_users.yml -u root -k
#部署ntp服務(wù)
ansible-playbook -i hosts.ini -l 192.168.113.24 deploy_ntp.yml -u tidb -b
#初始化服務(wù)器配置
ansible-playbook bootstrap.yml -l 192.168.113.24
#部署tikv
ansible-playbook deploy.yml -l 192.168.113.24
#啟動(dòng)tikv
ansible-playbook start.yml -l 192.168.113.24
#更新 Prometheus 配置并重啟:
ansible-playbook rolling_update_monitor.yml --tags=prometheus

幾分鐘后我們就可以在grafana上看到新增的tikv實(shí)例了,我們看下他的實(shí)例名稱审残,以及l(fā)eader和regions的數(shù)量梭域。


tikv實(shí)例名和主機(jī)名的對(duì)應(yīng)關(guān)系
leader及regions的數(shù)量

從上圖我們可以看到新增的tikv的實(shí)例叫做tikv_2006,并且已經(jīng)有region轉(zhuǎn)移到這個(gè)實(shí)例上了搅轿,但是分布還是不均勻病涨,我們等待一段時(shí)間看下。
半個(gè)鐘之后璧坟,發(fā)現(xiàn)tikv_2006還只是獲得6個(gè)region既穆。這個(gè)問題我們后續(xù)再討論,這里繼續(xù)下面的縮容實(shí)驗(yàn)雀鹃。

1.3 縮容一個(gè)Tikv

現(xiàn)在我們有4個(gè)Tikv了幻工,下面我們縮容一個(gè),只保留三個(gè)黎茎。我們對(duì)實(shí)例名為tikv_1也就是192.168.113.22這臺(tái)服務(wù)器下手吧囊颅,縮容的過程也命令非常簡(jiǎn)單。


對(duì)leader數(shù)量最多的tikv_1下手
  1. 使用 pd-ctl 從集群中移除節(jié)點(diǎn):

查看 192.168.113.22節(jié)點(diǎn)的 store id傅瞻,查詢到的store id為1踢代,也就是tikv_1,這就是它的實(shí)例名稱嗅骄。

/home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://192.168.113.20:2379" -d store

從集群移除store id 為 1的tikv:

/home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://192.168.113.20:2379" -d store delete 1

使用 Grafana 或者 pd-ctl 檢查節(jié)點(diǎn)是否下線成功(下線需要一定時(shí)間胳挎,下線節(jié)點(diǎn)的狀態(tài)變?yōu)?Tombstone 就說明下線成功了,這個(gè)時(shí)間可能非常久):

/home/tidb/tidb-ansible/resources/bin/pd-ctl -u "http://192.168.113.20:2379" -d store 1

等待了幾分鐘,下線成功溺森。


墓碑狀態(tài)
下線成功后的leader和region的分布情況

下線成功后慕爬,停止192.168.113.22 上的服務(wù)窑眯,沒下線成功請(qǐng)不要進(jìn)行下面的操作,耐心等待医窿。

ansible-playbook stop.yml -l 192.168.113.22

編輯 inventory.ini 文件伸但,移除節(jié)點(diǎn)信息:

[tikv_servers]
192.168.113.21
#192.168.113.22
192.168.113.23
192.168.113.24
...
[monitored_servers]
192.168.113.20
192.168.113.21
#192.168.113.22
192.168.113.23
192.168.113.24
...

更新 Prometheus 配置并重啟:

ansible-playbook rolling_update_monitor.yml --tags=prometheus

打開瀏覽器訪問監(jiān)控平臺(tái):http://192.168.113.20:3000,監(jiān)控整個(gè)集群的狀態(tài)留搔。

1.4 處理 Tombstone Stores 監(jiān)控條目

在進(jìn)行tikv的縮容后更胖,grafana的頁(yè)面上會(huì)出現(xiàn)墓碑狀態(tài)數(shù)量為1的情況。在確認(rèn)下線之后隔显,我們還要處理這個(gè)監(jiān)控却妨,否則這里會(huì)干擾我們監(jiān)控的準(zhǔn)確性。一是這個(gè)狀態(tài)很礙眼括眠,明明我都下線成功了為什么這個(gè)狀態(tài)還沒有消除彪标;二是 Leader balance 和 Region Balance的判斷把墓碑狀態(tài)的實(shí)例數(shù)據(jù)也算進(jìn)去,導(dǎo)致這個(gè)數(shù)據(jù)一直都是100%掷豺。

墓碑狀態(tài)

去除這個(gè)監(jiān)控?cái)?shù)據(jù)的關(guān)鍵在于如何刪除pd上的墓碑節(jié)點(diǎn)捞烟,在舊版本(2.1.17及3.0.0版本)中,這樣的節(jié)點(diǎn)沒辦法刪除的当船,在新版本中我們可以使用pd-ctl工具進(jìn)行刪除题画。

./pd-ctl -u 192.168.113.20:2379 -d stores remove-tombstone

就這樣我們就可以把墓碑狀態(tài)的節(jié)點(diǎn)刪除了,但是刪除后 Leader balance和 Region Balance還沒有恢復(fù)正常德频,在prometheus中還是監(jiān)控到墓碑節(jié)點(diǎn)的數(shù)據(jù)苍息,最后重啟pd(生產(chǎn)環(huán)境下慎用)解決。

最后的狀態(tài)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末壹置,一起剝皮案震驚了整個(gè)濱河市竞思,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钞护,老刑警劉巖盖喷,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異难咕,居然都是意外死亡课梳,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門步藕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來惦界,“玉大人挑格,你說我怎么就攤上這事咙冗。” “怎么了漂彤?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵雾消,是天一觀的道長(zhǎng)灾搏。 經(jīng)常有香客問我,道長(zhǎng)立润,這世上最難降的妖魔是什么狂窑? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮桑腮,結(jié)果婚禮上泉哈,老公的妹妹穿的比我還像新娘。我一直安慰自己破讨,他們只是感情好丛晦,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著提陶,像睡著了一般烫沙。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上隙笆,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天锌蓄,我揣著相機(jī)與錄音,去河邊找鬼撑柔。 笑死瘸爽,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的铅忿。 我是一名探鬼主播蝶糯,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼辆沦!你這毒婦竟也來了昼捍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤肢扯,失蹤者是張志新(化名)和其女友劉穎妒茬,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔚晨,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡乍钻,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了铭腕。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片银择。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖累舷,靈堂內(nèi)的尸體忽然破棺而出浩考,到底是詐尸還是另有隱情,我是刑警寧澤被盈,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布析孽,位于F島的核電站搭伤,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏袜瞬。R本人自食惡果不足惜怜俐,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望邓尤。 院中可真熱鬧拍鲤,春花似錦、人聲如沸汞扎。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)佩捞。三九已至绞幌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間一忱,已是汗流浹背莲蜘。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留帘营,地道東北人票渠。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像芬迄,于是被迫代替她去往敵國(guó)和親问顷。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

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

  • 一禀梳、分布式數(shù)據(jù)庫(kù)誕生背景 隨著互聯(lián)網(wǎng)的飛速發(fā)展杜窄,業(yè)務(wù)量可能在短短的時(shí)間內(nèi)爆發(fā)式地增長(zhǎng),對(duì)應(yīng)的數(shù)據(jù)量可能快速地從幾百...
    nightwish夜愿閱讀 3,522評(píng)論 0 12
  • 很多用戶在調(diào)研完 TiDB 之后算途,就會(huì)進(jìn)入測(cè)試環(huán)節(jié)塞耕,這里詳細(xì)描述一下硬件選型的相關(guān)考慮點(diǎn)。 測(cè)試環(huán)境 首先來談?wù)劀y(cè)...
    CocaLi閱讀 6,384評(píng)論 0 7
  • 為什么要進(jìn)行調(diào)度 先回憶一下第一篇文章提到的一些信息嘴瓤,TiKV 集群是 TiDB 數(shù)據(jù)庫(kù)的分布式 KV 存儲(chǔ)引擎扫外,...
    hiekay閱讀 2,276評(píng)論 0 1
  • 會(huì)獲得好運(yùn)
    SepPp閱讀 120評(píng)論 0 0
  • 年少不聽李宗盛,因?yàn)楫?dāng)你聽懂的時(shí)候廓脆,你的心已經(jīng)老了筛谚。不知什么時(shí)候,李宗盛成了我心中最贊的歌手停忿,他沒有光鮮的外表驾讲,沒...
    妞妞大王閱讀 838評(píng)論 0 1