tidb損壞tikv節點怎么恢復集群


tikv節點宕機(機器再起不來),或者數據節點被rm -rf 掉了怎么辦
正常情況下tikv節點down掉了。此時不要去執行store delete  store_id 。數據一般可以正常訪問,但是如果永久損壞的tikv節點。我們總想要把它移除。如何移除呢?
 (移除kv節點過程中,如果kv節點健康在線,可以實現動態移除。如果kv節點不可用,可能導致訪問數據的時候找不到region。【ERROR 9005 (HY000): Region is unavailable[try again later]】)
 
記移除一個損壞的tikv節點的過程:
1、動態移除kv節點
./pd-ctl  -d -u   http://192.168.100.73:4203   store delete 1
則該tikv節點狀態會變為 "state_name": "Offline"  狀態。
執行 operator show 會看到后台很多線程   transfer-peer  和 remove-peer  。
在此過程中可以先把故障節點的region 為leader 的轉走先(理論上leader轉義走了可以恢復正常,但實際並不一定):
scheduler add evict-leader-scheduler 1
調整作業調度的參數,加快region。(通過operator show可以看到調度進程。)
config set leader-schedule-limit 10
config set region-schedule-limit 10
config set replica-schedule-limit 20
如下圖:我們會看到leader_count 和region_count 慢慢在減少。
2、直至最后,有些region_count 一直不能自動transfer-peer  到別的kv節點。所以不能被   remove-peer。可以采取手動移除的辦法
(1):找出擁有損害kv節點的region。
pd-ctl -d -u   http://192.168.100.73:4203 region check down-peer |grep -B 1  "start_key"   |grep '"id":'|awk '{print "./pd-ctl -d -u   http://192.168.100.73:4203 operator add remove-peer "$NF" 1"}'|sed s/,//g
(2):以上語句會生成如下類似的語句,執行之(1是store_id的id標志。)。
./pd-ctl -d -u   http://192.168.100.73:4203 operator add remove-peer 4743 1
./pd-ctl -d -u   http://192.168.100.73:4203 operator add remove-peer 171058 1
./pd-ctl -d -u   http://192.168.100.73:4203 operator add remove-peer 11642 1
./pd-ctl -d -u   http://192.168.100.73:4203 operator add remove-peer 4419 1
在此查看損壞的kv節點的信息:
所有的region已經移除走,該kv節點已經不擁有任何region。理論上,此節點狀態應該變為Tombstone。數據庫恢復正常。但實際上可能會出現查詢到壞的region節點。依然不正常。
怎么辦呢?再次在pd工具下最新region。查看元數據信息,依然可以看到某些屬於損壞kv的region。並且處於pendingpear狀態。說明移除的region處於掛起狀態,可能hung住:
這些損壞kv節點的pendingpears雖然不是leader 。但是依然影響tidb節點的數據操作,導致dml時候老報以下錯誤:
ERROR 9005 (HY000): Region is unavailable[try again later]
 
3、如何解決?啟用kv節點修復數據工具
停止所有kv節點,執行以下語句。命令將一些失敗掉的機器從所有 Region 的 peers 列表中移除。這樣,這些 Region 便可以在 TiKV 重啟之后以剩下的健康的副本繼續提供服務了。這個命令常常用於多個 TiKV store 損壞或被刪除的情況。此命令會導致數據丟失,但因為在集群下我們有至少3個副本。所以基本上一個kv節點損壞並不會導致數據丟失,可放心執行。
tikv-ctl --db /path/to/tikv/db unsafe-recover remove-fail-stores 1
執行完以上語句后。在pd工具下查看store信息:
"state_name": "Tombstone" 表示下線成功的 TiKV 節點
 
狀態信息說明:
Up Stores:正常運行的 TiKV 節點數量
Disconnect Stores:短時間內通信異常的 TiKV 節點數量
LowSpace Stores:剩余可用空間小於 80% 的 TiKV 節點數量
Down Stores:停止工作的 TiKV 節點數量,如果大於 0,說明有節點不正常
Offline Stores:正在下線的 TiKV 節點數量(正在下線的 TiKV 節點還在提供服務)
Tombstone Stores:下線成功的 TiKV 節點數量
 
注:
如果集群不可用,緊急恢復集群,數據安全性不高。可以直接執行
tikv-ctl --db /path/to/tikv/db unsafe-recover remove-fail-stores 1


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM