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

tidb损坏tikv节点怎么恢复集群的更多相关文章

  1. 『叶问』#41,三节点的MGR集群,有两个节点宕机后还能正常工作吗

    『叶问』#41,三节点的MGR集群,有两个节点宕机后还能正常工作吗 每周学点MGR知识. 1. 三节点的MGR集群,有两个节点宕机后还能正常工作吗 要看具体是哪种情况. 如果两个节点是正常关闭的话,则 ...

  2. 基于hadoop2.6.0搭建5个节点的分布式集群

    1.前言 我们使用hadoop2.6.0版本配置Hadoop集群,同时配置NameNode+HA.ResourceManager+HA,并使用zookeeper来管理Hadoop集群 2.规划 1.主 ...

  3. 沉淀,再出发——手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群

    手把手教你使用VirtualBox搭建含有三个虚拟节点的Hadoop集群 一.准备,再出发 在项目启动之前,让我们看一下前面所做的工作.首先我们掌握了一些Linux的基本命令和重要的文件,其次我们学会 ...

  4. Kibana安装(图文详解)(多节点的ELK集群安装在一个节点就好)

    对于Kibana ,我们知道,是Elasticsearch/Logstash/Kibana的必不可少成员. 前提: Elasticsearch-2.4.3的下载(图文详解) Elasticsearch ...

  5. kafka系列一:单节点伪分布式集群搭建

    Kafka集群搭建分为单节点的伪分布式集群和多节点的分布式集群两种,首先来看一下单节点伪分布式集群安装.单节点伪分布式集群是指集群由一台ZooKeeper服务器和一台Kafka broker服务器组成 ...

  6. Filebeat-1.3.1安装和设置(图文详解)(多节点的ELK集群安装在一个节点就好)(以Console Output为例)

    前期博客 Filebeat的下载(图文讲解) 前提 Elasticsearch-2.4.3的下载(图文详解) Elasticsearch-2.4.3的单节点安装(多种方式图文详解) Elasticse ...

  7. Hadoop 单节点(或集群)基本配置信息

    1. 默认配置文件: 存放于Hadoop对应的jar包中 core-default.xml hdfs-default.xml yarn-default.xml mapred-default.xml 2 ...

  8. 【K8S】基于单Master节点安装K8S集群

    写在前面 最近在研究K8S,今天就输出部分研究成果吧,后续也会持续更新. 集群规划 IP 主机名 节点 操作系统版本 192.168.175.101 binghe101 Master CentOS 8 ...

  9. etcd受损节点重新加入集群

    文章目录 查看当前集群状态 删除受损etcd节点的数据 数据受损节点重新加入集群 修改etcd启动参数,重启etcd 由于自己的误操作,将A节点的etcd备份数据复制到B节点的etcd备份节点目录下, ...

随机推荐

  1. Scrapy框架之基于RedisSpider实现的分布式爬虫

    需求:爬取的是基于文字的网易新闻数据(国内.国际.军事.航空). 基于Scrapy框架代码实现数据爬取后,再将当前项目修改为基于RedisSpider的分布式爬虫形式. 一.基于Scrapy框架数据爬 ...

  2. mardown文档的用法

    <hr>分割换行符<br>分隔符 <ul> <li></li></ul>无序标签 <ol><li>< ...

  3. asp.net后台获取html控件的值

    1.asp.net后台获取前台type=text控件的值 前台:<input name="txtName" class="username" type=& ...

  4. 避免console错误,console兼容

    背景:写js代码时写了很多console.log进行日志打印,最后上生产时不想删除日志输出, 但是ie在不打开控制台时,日志输出会导致后续js不执行,所以需要适时屏蔽js日志输出 (IE等不支持con ...

  5. git如何进行远程分支切换

    git如何进行远程分支切换 git上查看远程分支命令: git branch -a  例如: 然后我想切换到daily/1.0.0远程分支:前提是必须要创建一个本地分支,并让它和远程分支进行关联,gi ...

  6. Business Component(BC)和Business Object(BO)

    Siebel应用架构的一个成功的地方就是在应用里引入了BC,BO的概念,从而使得几千张关系数据表能够按照业务的含义组织成业务对象,对于业务人员而言具有了业务上的含义,而不仅仅是从技术人员的观点来对待数 ...

  7. (原创)攻击方式学习之(3) - 缓冲区溢出(Buffer Overflow)

    堆栈溢出 堆栈溢出通常是所有的缓冲区溢出中最容易进行利用的.了解堆栈溢出之前,先了解以下几个概念: 缓冲区 简单说来是一块连续的计算机内存区域,可以保存相同数据类型的多个实例. 堆栈     堆 栈是 ...

  8. 二、安装桌面——Linux学习笔记

    安装桌面并不是商业化用的,只是为了熟悉Linux文档结构而已. 这个比较简单 1.输入安装桌面命令 # yum -y groups install "GNOME Desktop" ...

  9. 用AutoHotkey一键完成Xmind里的几个功能

    F5一键添加超链接(类型为主题),常规步骤:Ctrl_h打开窗口,点击[主题],激活光标到输入框. Ctrl-i一键添加截取的图片,常规步骤是:打开画图→粘贴→保存图片为文件→Xmind里Ctrl-i ...

  10. Oracle彻底杀掉进程

    kill session 是DBA经常碰到的事情之一.如果kill 掉了不该kill 的session,则具有破坏性,因此尽可能的避免这样的错误发生.同时也应当注意,如果kill 的session属于 ...