tikv节点宕机(机器再起不来),或者数据节点被rm -rf 掉了怎么办
正常状况下tikv节点down掉了。此时不要去执行store delete store_id 。数据通常能够正常访问,可是若是永久损坏的tikv节点。咱们总想要把它移除。如何移除呢?
(移除kv节点过程当中,若是kv节点健康在线,能够实现动态移除。若是kv节点不可用,可能致使访问数据的时候找不到region。【ERROR 9005 (HY000): Region is unavailable[try again later]】)
记移除一个损坏的tikv节点的过程:
一、动态移除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 慢慢在减小。

二、直至最后,有些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]
三、如何解决?启用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