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. java集合框架(二):HashTable

    HashTable作为集合框架中的一员,现在是很少使用了,一般都是在面试中会问到其与HashMap的区别.为了能在求职的时候用上场,我们有必要对其原理进行解读. HashTable的实现原理跟Hash ...

  2. Implementation: Quick Sort 2014-08-19

    #include <stdio.h> void print(int *a, int start , int end); void quick_sort(int *a, int start, ...

  3. JSON初试

    本次在课堂上老师教我使用JSON. 本次的教学网站是:https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/JSON?td ...

  4. Android SharedPreferences存储map的方法

    在网上查了一些资料后,精简改写后得出自己想用的形式,记录一下 public static void putHashMapData(Context context, String key, Map< ...

  5. android 账户管理

    1.Android开发之帐户管理 2.Android 帐户管理 小记 3.Android特色开发之账户管理 4.android AccountManager and SyncManager 5.And ...

  6. Oracle 数据库异机恢复(归档模式)

    操作必须在服务器上进行(在192.168.12.71上执行) 0.按需要恢复的日期,把距恢复日期最近的全部备份和全部备份日期后的日志备份一同拷贝到需要恢复的机器上: 1.用RMAN登陆 C:\User ...

  7. linux c 监控目录

    static void* thread_monitor(void* args) { pthread_detach(pthread_self()); int fd; int wd; int len; i ...

  8. 使用本地计划任务定时关闭azure虚拟机

    本文包含以下内容 前提条件 如何实现定时关闭虚拟机 前提条件 Controller 机器上必须安装 Azure PowerShell,并且要在 PowerShell 里登录一次 Azure, 请参见: ...

  9. 免费的SSL证书,你值得拥有!Let's Encrypt 试用体验记录

    早上收到 Let’s Encrypt 的邮件,说偶之前申请的已经通过了,于是马上开始试用.Let’s Encrypt 是一个新的数字证书认证机构,它通过自动化的过程消除创建和安装证书的复杂性,为网站提 ...

  10. 自动驾驶self driving知识点mark

    C++, algorithm, RTOS,TX2, CAN, 标准, car model,