在asktom的論壇裡面,看到有人提問:一個tikv節點磁碟壞了,現在是down狀態,tikv.log裡面不停寫入太多關於這個節點存取不了的紀錄檔資訊,佔據大量磁碟,她的處理方式如下:
a、根據ip地址,找到這個節點的store id
b、用store delete,來讓這個節點處於offline狀態,之後快速變成Tombstone狀態,他就可以下掉這個節點了。
c、intenvry.ini檔案裡面,去掉這個節點的ip設定資訊。
d、找廠商修復這個節點磁碟,廠商修復後,發現磁碟檔案徹底損壞,換了個新的盤給她。
這樣的處理後,他發現這個tikv節點,還是加入不了tidb叢集,一直處於offline狀態,tikv.log紀錄檔不停寫入,這個的情況該怎麼處理呢?根據各位網友的回覆和解決過程,整理如下:
這個節點上的資料已經丟失了,但是叢集的資料還在,因為是三副本,所以只要在叢集裡面下掉這個tikv節點,然後按照新增新節點的方式,加入這個tikv節點,讓tidb叢集自動補資料進來就可以了。
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 是否有抖動,如果抖動比較明顯再把值調整小點