doris的tablet副本修复相关情况总结
在使用doris的时候,由于一些极端情况的出现或者doris本身bug的原因,会出现一些tablet损坏的情况,导致数据的插入和查询受到影响,下面总结一下doris副本出现损坏时进行修复的一些情况。
目录
一、多副本情况下个别副本损坏
二、多副本或者1个副本情况下所有副本都损坏
2.1 使用空白副本填补缺失副本
2.2 使用meta_tool 删除tablet副本的元数据
一、多副本情况下个别副本损坏
在大多数情况下,如果tablet配置的是多个副本,如果某个副本发生损坏,Doris 都可以自动的进行副本修复和集群均衡,但在某些情况下,Doris 可能无法自动检测某些损坏的副本,从而导致查询或导入在损坏的副本上频繁报错。此时我们需要手动删除已损坏的副本。该方法可以适用于:删除版本数过高导致 -235 错误的副本、删除文件已损坏的副本等等。
首先,找到副本对应的 tablet id,假设为: 11032, 执行命令: show tablet 11032 ,然后再执行返回结果中DetailCmd一列的 show proc语句来查看副本的详情,如下图所示:
然后通过执行show proc语句返回的结果中,查看要修复的副本所在的BackendId,如下图所示:
此时,就可以得到此副本所在的tabletId是11302,backendId是10002,然后执行一下命令将副本标记为bad
ADMIN SET REPLICA STATUS PROPERTIES("tablet_id" = "11032", "backend_id" = "10002", "status" = "bad");
此时,再次通过 show proc
语句可以看到对应的副本的 IsBad
列值为 true,如下图所示:
这样,被标记为 bad
的副本不会再参与导入和查询。同时副本修复逻辑会自动补充一个新的副本。
二、多副本或者1个副本情况下所有副本都损坏
如果tablet只配置了1个副本,或者某些极端特殊情况下,如代码BUG,突然停电,人为误操作等,可能导致部分tablet的全部副本都丢失,这种情况下,数据已经实质性的丢失。一般的表现情况就是在查询和导入数据时报错:
查询报错: ERROR 1064 (HY000): errCode = 2, detailMessage = Failed to get scan range, no queryable replica found in tablet: 11032
导入数据报错: errCode=2,detailMessage= Failed to commit txn 115471185 Tablet [11032] success replica num 0 is less than quorum replica num 1 while error backends
查询fe的日志,可以看到类似的日志:backend [10002] invalid situation. tablet[11032] has few replica[1], replica num setting is [3]
这个日志表示,Tablet 11032的所有副本已损坏或丢失。
但是在某些场景下,业务依然希望能够在即使有数据丢失的情况下,保证查询正常不报错,此时,我们可以通过使用空白Tablet填充丢失副本的功能,来保证查询能够正常执行。
注:该操作仅用于规避查询因无法找到可查询副本导致报错的问题,无法恢复已经实质性丢失的数据。
2.1 使用空白副本填补缺失副本
当确认数据已经无法恢复后,可以通过执行以下命令,生成空白副本。
ADMIN SET FRONTEND CONFIG ("recover_with_empty_tablet" = "true");
设置完成几分钟后,应该会在 Master FE 日志 fe.log 中看到如下日志:
tablet 11032 has only one replica 11033 on backend 10002 and it is lost. create an empty replica to recover it
该日志表示系统已经创建了一个空白 Tablet 用于填补缺失副本。
此时,通过查询来判断是否已经修复成功,如果能正常查询,则说明修复成功,通过以下命令关闭 recover_with_empty_tablet 参数:
ADMIN SET FRONTEND CONFIG ("recover_with_empty_tablet" = "false");
如果修复未成功,则需要借助Tablet 元数据管理工具 meta_tool 来删除tablet的元数据。
2.2 使用meta_tool 删除tablet副本的元数据
meta_tool 工具存放在 BE 的 lib/ 目录下,用于离线的各类元数据管理操作,使用前必须先停止BE进程!!!
还是以tablet 11032为例,说明删除的具体步骤。
还是首先执行 show tablet 11032 ,然后再执行返回结果中DetailCmd一列的 show proc语句来查看副本的详情,如下图所示:
此时需要记录一下各个副本所对应的BackendId,SchemaHash,PathHash 这三列的值。
以ReplicaId为11033的副本为例,其BackendId为10002,SchemaHash为566420086,PathHash为4267264358573635410
然后执行命令: SHOW PROC '/backends'; 来查看backendId为10002的服务器ip地址,如下图所示:
然后再执行命令: SHOW PROC '/backends/10002'; 来查询此backend所配置的存储信息,并找到PathHash为4267264358573635410所对应的数据目录RootPath,如下图所示:
此时,就可得到副本11033的信息tabletId为 11032,SchemaHash为566420086,rootPath为/bigdata/bigdata1/dorisData.HDD
然后,登录到BackendId为10002的服务器,切换到be的目录,然后执行命令:./bin/stop_be.sh 停止be进程。
然后执行元数据删除命令: ./lib/meta_tool --operation=delete_meta --root_path=/bigdata/bigdata1/dorisData.HDD --tablet_id=11032 --schema_hash=566420086
命令成功执行后,再执行命令: ./bin/start_be.sh --daemon 启动be即可。
然后,按照删除11033这个副本同样的步骤去删除tablet下剩下的副本即可。
doris的tablet副本修复相关情况总结相关推荐
- doris 分片与副本
数据分片 Doris 表按两层结构进行数据划分,分别是分区和分桶.示意如下: 每个分桶文件就是一个数据分片(Tablet),Tablet是数据划分的最小逻辑单元.每个 Tablet 包含若干数据行.各 ...
- doris 导入遇tablet writer write failed, err=-235问题解决
doris 遇tablet writer write failed, tablet_id=27306172, txn_id=28573520, err=-235问题解决 我们是通过sql的方式使用fl ...
- Doris FE配置参数(全面)
Doris FE配置参数 该文档主要介绍 FE 的相关配置项. FE 的配置文件 fe.conf 通常存放在 FE 部署路径的 conf/ 目录下. 而在 0.14 版本中会引入另一个配置文件 fe_ ...
- Doris之磁盘空间管理(重点)
Doris之磁盘空间管理(重点) 磁盘存储空间有关的系统参数和处理策略. Doris 的数据磁盘空间如果不加以控制,会因磁盘写满而导致进程挂掉.因此我们监测磁盘的使用率和剩余空间,通过设置不同的警戒水 ...
- Doris源码解析[一、负载均衡]
# Doris 副本修复和均衡策略 # 名词解释 Tablet:Doris 表的逻辑分片,一个表有多个分片 Replica:分片的副本,默认一个分片有3个副本 Healthy Replica:健康副本 ...
- Apache Doris 向量化版本在小米A/B实验场景的调优实践
作者 | 魏祚.赵立伟.曾敏锐.汤佳树 长期以来,Apache Doris在小米集团都有着广泛的应用.随着小米互联网业务的快速发展,用户对Apache Doris的查询性能提出了更高的要求,Doris ...
- 查询性能显著提升,Apache Doris 向量化版本在小米 A/B 实验场景的调优实践
导读: 长期以来,Apache Doris在小米集团都有着广泛的应用.随着小米互联网业务的快速发展,用户对Apache Doris的查询性能提出了更高的要求,Doris 向量化版本在小米内部上线已经迫 ...
- Doris之数据划分(全面)
数据划分 本文档主要介绍 Doris 的建表和数据划分,以及建表操作中可能遇到的问题和解决方法. 基本概念 在 Doris 中,数据都以表(Table)的形式进行逻辑上的描述. Row & C ...
- Windows XP Service Pack 3 修复程序列表
编号文章标题类别274261 (http://support.microsoft.com/kb/274261/)超级终端缓冲区历史可能出现损坏修复297694 (http://support.micr ...
- Doris(一)-简介、架构、编译、安装和数据表的基本使用
目录 1.Doris简介 2.Doris网址 3.Doris架构 3.编译和安装 3.1.软硬件需求 3.2.编译 3.2.1.安装Docker环境 3.2.2.使用Docker 开发镜像编译 3.3 ...
最新文章
- centos7上配置Samba服务器完成与windows的文件共享
- ZKEACMS for .Net Core 深度解析
- 区块链技术的发展趋势
- Netty工作笔记0071---Protobuf传输多种类型
- HMM隐马尔可夫模型(HMM)攻略
- 大数据奏鸣曲,听出了什么?
- 【LeetCode】【数组】题号:*189,旋转数组
- Dijkstra算法C++实现
- 基于企业服务总线的主数据管理系统(MDM)集成方案
- 北上广,是程序员最好的归宿?
- 动态规划问题经典例题
- enterprise architect 小实验
- 并发控制五(封锁的粒度)
- 【滤波】一维卡尔曼滤波器
- Axios 的简易学习笔记
- android状态栏右上角增加图标的方法
- 因电子邮件礼节不佳而被解雇
- PLC PLSY 指令
- 2019校招宜信JAVA研发面经
- android查ip地址,Android 查看IP地址