[转帖]TiDB-unsafe recover(三台tikv宕机两台)
一、背景
| 名称 | 数量 |
|---|---|
| tikv | 3 |
| 副本 | 3 |
1.故障:
因为某些原因,两台tikv不可连接,出现region不能访问的故障
2.几条理论:
2.1.多副本原则
存在一半以上的副本则集群访问不受影响(如n副本,存活(n+1)/ 2)
2.2.数据完整性
当副本数量等于tikv的数量的时候,每一个tikv都有全部的region,只不过不是每个region都是leader
2.3.集群不可访问
当副本存活数量小于(n+1)/ 2的时候,集群不可访问,只能使用unsafe recover来恢复
二、故障处理
1.查看不可连接的store
# 记录下 "state_name": "Disconnected"的store id(我的是1,7)
tiup ctl:v4.0.13 pd -u http://pd_ip:pd_port store
2.关闭pd调度,避免恢复过程中产生异常
# 进入交互模式
tiup ctl:v4.0.13 pd -u http://pd_ip:pd_port -i
# 分别执行以下命令
config set region-schedule-limit 0
config set replica-schedule-limit 0
config set leader-schedule-limit 0
config set merge-schedule-limit 0
# 查看调度是否关闭
operator show
3.停止tikv进程(防止执行unsafe-recover remove-fail-stores出现文件锁而失败)
tiup cluster stop cluster_name -R tikv
4.进行unsafe-recover remove-fail-stores
4.1 将tikvctl挪移到所有状态正常kv机器中
scp /data/tidb/.tiup/components/ctl/v4.0.13/tikv-ctl tidb@192.168.1.1:/home/tidb
scp /data/tidb/.tiup/components/ctl/v4.0.13/tikv-ctl tidb@192.168.1.2:/home/tidb
scp /data/tidb/.tiup/components/ctl/v4.0.13/tikv-ctl tidb@192.168.1.3:/home/tidb
4.2 执行tikvctl命令
# 4.0.x 版本命令,-s是指store id,--all-regions是指所有region,-r 可以用来指定的region来代替--all-regions
# unsafe-recover remove-fail-stores(故障机器从指定 Region 的 peer 列表中移除)
./tikv-ctl --db /data/tikv/tikv-data28016/db unsafe-recover remove-fail-stores -s 1,7 --all-regions
# 5.x 版本命令
./tikv-ctl --data-dir /data/tikv/tikv-data28016 unsafe-recover remove-fail-stores -s 1,7 --all-regions
5.恢复pd调度
# 进入交互模式
tiup ctl:v4.0.13 pd -u http://pd_ip:pd_port -i
# 分别执行以下命令(值为关闭之前的值就可以)
config set region-schedule-limit 2048
config set replica-schedule-limit 64
config set leader-schedule-limit 4
config set merge-schedule-limit 8
6.启动tikv集群
tiup cluster start cluster_name -R tikv
三、一些不成功的尝试方法
1.主要原因
看日志的原因是连接到几个已经down 掉的kv
2.解决
2.1尝试 --force缩容依旧报错
tiup cluster scale-in cluster_name -N tikv_ip:tikv_port --force
2.2 尝试store delete
# 进入交换模式
tiup ctl:v4.0.13 pd -u http://pd_ip:pd_port -i
# 查看当前都有哪些store
store
# 删除对应id的store
store delete 1
# 没有删除掉,这是因为状态不是Tombstone的状态无法进行delete
2.3 查看宕机store上的region
# 进入交换模式
tiup ctl:v4.0.13 pd -u http://pd_ip:pd_port -i
# 查看region
region store 1
# 这里可以看到pd的记录里,还有好多region再这个宕机的store上,那么这样的话就回向对应的kv发布消息,但kv收不到,所以就会有region不可用的报错
综上: 只有把宕机store上的region清除掉,才能让集群正常启动,所以这里就用到了unsafe-recover方法
感谢大佬的文章:
https://mp.weixin.qq.com/s/u5MBSIydf_ZQ1jxCJn4O2A
https://tidb.io/blog/9163546d
[转帖]TiDB-unsafe recover(三台tikv宕机两台)的更多相关文章
- Aerospike系列:8:集群宕机演练
1:初始的集群状态 2:关掉192.168.91.133:3000 3:再关掉192.168.91.135:3000 3:再关掉192.168.91.144:3000 5:恢复192.168.91.1 ...
- 服务应用突然宕机了?别怕,Dubbo 帮你自动搞定服务隔离!
某日中午,午睡正香的时候,接到系统的报警电话,提示生产某物理机异常宕机了,目前该物理机已恢复,需要重启上面部署的应用. 这时瞬间没有了睡意,登上堡垒机,快速重启了应用,系统恢复正常.本想着继续午睡,但 ...
- Tidb进行缩减扩容tikv节点
这两天接到任务说是要进行测试缩减机器给集群带来的负面效果有哪些. 然后我就按照官方的教程将机器进行了缩减,主要是缩减tikv节点 我们先来看看官方的文章是怎么写的: 步骤都没有什么问题,就是进行到第二 ...
- go 语言的宕机恢复(recover)
go 语言中的三种报错机制 第一种,也就是常说的 error 类型错误,不需要 recover 拯救,处理方式自己决定 第二种,panic 和 recover 是紧密集合的,有点类似 try catc ...
- [转帖]Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案
Redis持久化--Redis宕机或者出现意外删库导致数据丢失--解决方案 https://www.cnblogs.com/xlecho/p/11834011.html echo编辑整理,欢迎转载,转 ...
- 双十一来了,别让你的mongodb宕机了
好久没过来吹牛了,前段时间一直赶项目,没有时间来更新博客,项目也终于赶完了,接下来就要面临双十一这场惊心动魄的处女秀考验, 我们项目中会有一个wcf集群,而集群地址则放在mongodb中,所以mong ...
- mysql 异常宕机 ..InnoDB: Database page corruption on disk or a failed,,InnoDB: file read of page 8.
mysql 测试环境异常宕机 系统:\nKylin 3.3 mysql版本:5.6.15--yum安装,麒麟提供的yum源数据库版本 error日志 181218 09:38:52 mysqld_sa ...
- HBase–RegionServer宕机恢复原理
Region Server宕机总述 HBase一个很大的特色是扩展性极其友好,可以通过简单地加机器实现集群规模的线性扩展,而且机器的配置并不需要太好,通过大量廉价机器代替价格昂贵的高性能机器.但也正因 ...
- Oracle备库宕机启动解决方案
简介 ORA-10458: standby database requires recovery ORA-01196: 文件 1 由于介质恢复会话失败而不一致 ORA-01110: 数据文件 1: ' ...
- 【大数据面试】【框架】kafka:组成、台数/参数配置、持久化、ISR队列、宕机、丢数据、重复数据、数据积压、优化各种配置(刷盘、存盘、副本、压缩)、zk、其他
一.基本信息 1.组成 生产者 broker 消费者 zookeeper:brokerid.consumer信息(不包含生产者的信息) 2.需要安装多少台 2 * (生产者的峰值生产速率 * 副本 / ...
随机推荐
- Java反序列化漏洞-URLDNS链分析
目录 一.前置知识 反射 二.分析 1. URL 2. HashMap 3. 解决一些问题 反射修改字段值 三.POC 四.利用链 一.前置知识 菜鸟教程 Java 序列化 Java安全-反射 URL ...
- Baidu Comate实践指南,惊艳了我...
1 啥是Baidu Comate Comate是百度开发的编程大模型工具,它基于文心大模型,结合百度积累多年的编程现场大数据和外部优秀开源数据,为我们生成更符合实际研发场景的优质代码:它能提升编码效率 ...
- 物联网为什么需要5G?
摘要:5G,这个词,我想每个接触ICT行业的朋友都有听过,可5G的到来,对物联网行业的帮助究竟是什么? 我相信,95%的ICT从业者对5G这一概念没有一个清晰的认知. 这一期文章的主题主要是普及一些5 ...
- 一文带你掌握Redis操作指南
摘要:Redis是一种支持Key-Value等多种数据结构的存储系统. Redis是一种支持Key-Value等多种数据结构的存储系统.可用于缓存,事件发布或订阅,高速队列等场景.该数据库使用ANSI ...
- 华为云数据库内核专家为您揭秘:GaussDB(for MySQL)并行查询有多快?
摘要:GaussDB(for MySQL)并行查询为何快人一步?华为云数据库内核专家这样说 本文分享自华为云社区<华为云数据库内核专家为您揭秘:GaussDB(for MySQL)并行查询有多快 ...
- MultipartFile与File的一些事
摘要:某段时间碰到了中转文件的需求,需要使用HttpClient中转一下文件,在实现这个需求的过程中就用得到了MultipartFile与File. 本文分享自华为云社区<MultipartFi ...
- Spring 太肥、太慢?你受不了?那 Solon Java Framework 就是你的西施
Solon 是什么? Java 生态型应用开发框架.它从零开始构建,有自己的标准规范与开放生态(历时五年,已有全球第二级别的生态规模).与其他框架相比,它解决了两个重要的痛点:启动慢,费内存.2023 ...
- 【开源项目推荐】——纯中文本地GPT知识库搭建项目.assets
大家好,我是独孤风. 又到了本周的开源项目推荐.近一年多的时间,人工智能迎来了大爆发.GPT相关的大模型的发展让很多领域都发生了巨大的变化. 但是虽然GPT的自然语言识别功能异常的强大,但回答给我们的 ...
- 0x03~04 前缀和与差分、二分
A题:HNOI2003]激光炸弹 按照蓝书上的教程做即可,注意这道题卡空间用int 而不是 long long. int g[5010][5010]; int main() { ios_base::s ...
- 技术分享 | 不同格式标准SBOM清单横评:SPDX、CDX和DSDX
为了保证安全性.降低开发.采购及维护的相关成本,复杂动态的现代软件供应链对软件资产透明度提出了更高的要求.使用清晰的软件物料清单(SBOM)收集和共享信息,并在此基础上进行漏洞.许可证和授权管理等,可 ...