在使用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副本修复相关情况总结相关推荐

  1. doris 分片与副本

    数据分片 Doris 表按两层结构进行数据划分,分别是分区和分桶.示意如下: 每个分桶文件就是一个数据分片(Tablet),Tablet是数据划分的最小逻辑单元.每个 Tablet 包含若干数据行.各 ...

  2. doris 导入遇tablet writer write failed, err=-235问题解决

    doris 遇tablet writer write failed, tablet_id=27306172, txn_id=28573520, err=-235问题解决 我们是通过sql的方式使用fl ...

  3. Doris FE配置参数(全面)

    Doris FE配置参数 该文档主要介绍 FE 的相关配置项. FE 的配置文件 fe.conf 通常存放在 FE 部署路径的 conf/ 目录下. 而在 0.14 版本中会引入另一个配置文件 fe_ ...

  4. Doris之磁盘空间管理(重点)

    Doris之磁盘空间管理(重点) 磁盘存储空间有关的系统参数和处理策略. Doris 的数据磁盘空间如果不加以控制,会因磁盘写满而导致进程挂掉.因此我们监测磁盘的使用率和剩余空间,通过设置不同的警戒水 ...

  5. Doris源码解析[一、负载均衡]

    # Doris 副本修复和均衡策略 # 名词解释 Tablet:Doris 表的逻辑分片,一个表有多个分片 Replica:分片的副本,默认一个分片有3个副本 Healthy Replica:健康副本 ...

  6. Apache Doris 向量化版本在小米A/B实验场景的调优实践

    作者 | 魏祚.赵立伟.曾敏锐.汤佳树 长期以来,Apache Doris在小米集团都有着广泛的应用.随着小米互联网业务的快速发展,用户对Apache Doris的查询性能提出了更高的要求,Doris ...

  7. 查询性能显著提升,Apache Doris 向量化版本在小米 A/B 实验场景的调优实践

    导读: 长期以来,Apache Doris在小米集团都有着广泛的应用.随着小米互联网业务的快速发展,用户对Apache Doris的查询性能提出了更高的要求,Doris 向量化版本在小米内部上线已经迫 ...

  8. Doris之数据划分(全面)

    数据划分 本文档主要介绍 Doris 的建表和数据划分,以及建表操作中可能遇到的问题和解决方法. 基本概念 在 Doris 中,数据都以表(Table)的形式进行逻辑上的描述. Row & C ...

  9. Windows XP Service Pack 3 修复程序列表

    编号文章标题类别274261 (http://support.microsoft.com/kb/274261/)超级终端缓冲区历史可能出现损坏修复297694 (http://support.micr ...

  10. Doris(一)-简介、架构、编译、安装和数据表的基本使用

    目录 1.Doris简介 2.Doris网址 3.Doris架构 3.编译和安装 3.1.软硬件需求 3.2.编译 3.2.1.安装Docker环境 3.2.2.使用Docker 开发镜像编译 3.3 ...

最新文章

  1. centos7上配置Samba服务器完成与windows的文件共享
  2. ZKEACMS for .Net Core 深度解析
  3. 区块链技术的发展趋势
  4. Netty工作笔记0071---Protobuf传输多种类型
  5. HMM隐马尔可夫模型(HMM)攻略
  6. 大数据奏鸣曲,听出了什么?
  7. 【LeetCode】【数组】题号:*189,旋转数组
  8. Dijkstra算法C++实现
  9. 基于企业服务总线的主数据管理系统(MDM)集成方案
  10. 北上广,是程序员最好的归宿?
  11. 动态规划问题经典例题
  12. enterprise architect 小实验
  13. 并发控制五(封锁的粒度)
  14. 【滤波】一维卡尔曼滤波器
  15. Axios 的简易学习笔记
  16. android状态栏右上角增加图标的方法
  17. 因电子邮件礼节不佳而被解雇
  18. PLC PLSY 指令
  19. 2019校招宜信JAVA研发面经
  20. android查ip地址,Android 查看IP地址

热门文章

  1. Tbase 源码 (三)
  2. 【math】 向量运算:叉乘
  3. 语句覆盖、条件覆盖、判定覆盖、条件-判定覆盖、组合覆盖、路径覆盖
  4. 修正的判定/条件覆盖
  5. 教你itunes电脑版怎么下载
  6. 团队协作工具-版本控制软件SVN、Git、码云
  7. 酷!有人把火星车都造出来了,教程全面开源
  8. 中职学校计算机基础设施建设,以信息化推动中职学校计算机专业建设.doc
  9. 浅谈逻辑漏洞:越权漏洞、密码找回漏洞、支付逻辑漏洞、指定账户恶意攻击、登录体系安全、业务一致性安全、业务数据篡改、验证码突破、数据重放安全
  10. 360加固签名验证_360加固助手签名工具怎么用