學習筆記 - tikv節點磁碟壞了怎麼修復

2020-10-02 16:00:27

 

1、大概情況

在asktom的論壇裡面,看到有人提問:一個tikv節點磁碟壞了,現在是down狀態,tikv.log裡面不停寫入太多關於這個節點存取不了的紀錄檔資訊,佔據大量磁碟,她的處理方式如下:

a、根據ip地址,找到這個節點的store id

b、用store delete,來讓這個節點處於offline狀態,之後快速變成Tombstone狀態,他就可以下掉這個節點了。

c、intenvry.ini檔案裡面,去掉這個節點的ip設定資訊。

d、找廠商修復這個節點磁碟,廠商修復後,發現磁碟檔案徹底損壞,換了個新的盤給她。

這樣的處理後,他發現這個tikv節點,還是加入不了tidb叢集,一直處於offline狀態,tikv.log紀錄檔不停寫入,這個的情況該怎麼處理呢?根據各位網友的回覆和解決過程,整理如下:

 

2、解決思路

這個節點上的資料已經丟失了,但是叢集的資料還在,因為是三副本,所以只要在叢集裡面下掉這個tikv節點,然後按照新增新節點的方式,加入這個tikv節點,讓tidb叢集自動補資料進來就可以了。

 

3、解決方案

a、強行設定tikv節點為tombstone狀態

登入pd的server節點,在業務低峰期執行下 tombstone 命令,curl -X POST 'http://{pd_ip}:{pd_port}/pd/api/v1/store/{store_id}/state?state=Tombstone'   ,然後觀察下 grafana 裡 region health 有沒有開始進行補副本操作,執行完後,老的store就從offline變成了Tombstone,雖然ip地址沒有變化,但是store id從老的值5變成了新的值39124701,這樣就開始了補副本的操作。

 

b、提高補副本的速度

進去命令列模式,使用命令-i,如:./resources/bin/pd-ctl -u  "http://${pd_ip地址}:2379" -i

如果叢集負載不大的話,可以在 pd-ctl 中按照下面這種方式調整下:
    stores set limit 30       --設定所有 store 新增 learner/peer 的速度上限為 30 。
    store limit 39124701 45   --單獨設定新加的這個 tikv 節點新增 learner/peer 的速度上限為 45
    調整後觀察下叢集的 QPS/TPS 是否有抖動,如果抖動比較明顯再把值調整小點