tidb损坏tikv节点怎么恢复集群

Easter79
• 阅读 912

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  。

tidb损坏tikv节点怎么恢复集群

在此过程中可以先把故障节点的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 慢慢在减少。

tidb损坏tikv节点怎么恢复集群

**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节点的信息:

tidb损坏tikv节点怎么恢复集群

所有的region已经移除走,该kv节点已经不拥有任何region。理论上,此节点状态应该变为Tombstone。数据库恢复正常。但实际上可能会出现查询到坏的region节点。依然不正常。

tidb损坏tikv节点怎么恢复集群

怎么办呢?再次在pd工具下最新region。查看元数据信息,依然可以看到某些属于损坏kv的region。并且处于pendingpear状态。说明移除的region处于挂起状态,可能hung住:

tidb损坏tikv节点怎么恢复集群

这些损坏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 节点

  tidb损坏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

点赞
收藏
评论区
推荐文章
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Easter79 Easter79
3年前
tidb集群某个节点报错之:node_exporter
今天启动集群tidb时出现一个错误,是某个tikv节点报错:node\_exporter9100.service failed一个节点的问题会导致整个集群启动失败。去此节点下的日志文件中查找,发现没有什么报错原因。无奈此时只能去系统日志中查看发生了什么问题果然发现了问题Jan1615:35:05ip1723126133
Wesley13 Wesley13
3年前
RAC环境单实例启动数据库收到ORA
     在RAC环境中,如果你在没有启动节点的集群服务的情况下单实例启动数据库,将收到类似如下的报错:\oracle@rhel1u01\$sqlSQL\Plus:Release10.2.0.5.0ProductiononTueApr215:00:272013Copyright(
菜园前端 菜园前端
1年前
DOM 文档对象模型使用教程来喽!
原文链接:HTML模板html我是网站标题访问节点通过id访问指定节点getElementByIdjavascriptvarnodedocument.getElementById('box')通过name访问指定节点getElementsByNamejav
Easter79 Easter79
3年前
TiDB 压力测试报告
TiDB压力测试报告(转载自公众号DBATech)一、测试环境1、tidb集群架构:测试使用最基本的TiDB架构。即3个tidbserver节点3个tikv节点3个pd节点。2、tidb集群的部署环境(混合部署):192.168.xx.A1\server1\PD1\tikv192.
Wesley13 Wesley13
3年前
mongo复制集脑裂问题如何处理
mongo replication 脑裂问题如何处理:一、问题描述:一套mongo replication有4个节点。1个仲裁节点。在停止实例(或实例毁坏)的时候,导致所有节点都变为SECONDARY节点。不管如何重启节点。或者停止到最后一个节点。此时mongo节点都是SECONDARY。二、出现的现象:1、如果此时所有节点都重新
Wesley13 Wesley13
3年前
GoJS API学习
varnode{};node"key""节点Key";node"loc""00";//节点坐标node"text""节点名称";//添加节点通过按钮点击,添加新的节点到画布myDiagram.model.addNodeData(nod
Stella981 Stella981
3年前
Spring Cloud Eureka 服务关闭但是未从注册中心删除 自我保护机制
自我保护背景首先对Eureka注册中心需要了解的是Eureka各个节点都是平等的,没有ZK中角色的概念,即使N1个节点挂掉也不会影响其他节点的正常运行。默认情况下,如果EurekaServer在一定时间内(默认90秒)没有接收到某个微服务实例的心跳,EurekaServer将会移除该实例。但是当网络分区故障发生时,微服务与EurekaSer
赵亦华 赵亦华
1年前
云数据库服务在国内的应用
企业持续不间断的服务,通常意味着给客户最流畅的产品体验。分布式OceanBase集群,如果一个节点出现异常,这个服务节点可以自动移除。
京东云开发者 京东云开发者
10个月前
ElasticSearch集群灾难:别放弃,也许能再抢救一下 | 京东云技术团队
1前言Elasticsearch作为一个分布式搜索引擎,自身是高可用的;但也架不住一些特殊情况的发生,如:集群超过半数的master节点丢失,ES的节点无法形成一个集群,进而导致集群不可用;索引shard的文件损坏,分片无法被正常恢复,进而导致索引无法正常
Easter79
Easter79
Lv1
今生可爱与温柔,每一样都不能少。
文章
2.8k
粉丝
5
获赞
1.2k