
王工在最近的一次 Doris 查询中,遇到了一个令他困扰的报错信息:
[CANCELLED]failed to initialize storage reader. tablet=12034214, res=[IO_ERROR]failed to read /data/doris/be/data/921/12034214/1235723928/020000000028650c634b5b9e40d26aef437bfbc32c0277a6_1.dat, backend=10.100.2.124')
机缘巧合下,链接到向光,经过初步定位:
该报错信息指出在初始化存储读取器时失败,具体原因是无法读取某个数据文件。
以下是对此次报错排查过程的详细记录。
步骤一:初步诊断
首先我们排查一下 tablet 是否有问题,这里可以参考上一篇的数据副本排查指南
查看 Tablet 状态: 使用 show tablet 12034214
命令查看 Tablet 的详细信息。执行 detail cmd
的内容,确认 Tablet 的 version 状态正常。

检查文件权限:
tablet 状态都是正常的,于是我们确认一下报错对应的文件权限是否正常

步骤二:文件校验与损坏确认
既然 Doris 拥有读取文件的权限,那么问题是否出在文件本身呢?为了验证这一点,我们使用sha1sum
命令尝试计算文件的哈希值。
下图使用sha1sum
命令尝试计算文件的哈希值,但操作失败,说明我们已经找到问题的关键了,这表明文件已损坏,无法读取,可能的原因包括磁盘故障或 Compaction 过程中出现问题。

步骤三:验证其他副本
由于该表采用了三副本策略,所以我们来看看其他副本是否也损坏了呢?
通过 set use_fix_replica=0, 1, 2
分别查询对应的 Tablet 数据,发现可以正常查询到数据,说明其他副本是正常的。
-- 查看某个 tablet 的数据
select * from db.table tablet(tablet_id)
由此确定,只需删除损坏的副本即可,Doris 会自动从其他正常副本 clone 一个新的副本。
use_fix_replica使用固定 replica 进行查询。replica 从 0 开始,如果 use_fix_replica 为 0,则使用最小的,如果 use_fix_replica 为 1,则使用第二个最小的,依此类推。默认值为 -1,表示未启用。
步骤四:尝试修复
避免直接删除文件:直接删除
.dat
文件可能会引起未知错误。使用官方推荐方法:
这是什么原因呢?通过查阅官方文档,我们发现设置为 Bad 状态的副本,如果副本状态实际上是正常的(尽管文件已损坏),FE 会自动将其恢复为 ok 状态。这解释了为什么设置 bad 状态无效的原因。
在之前的数据副本修复指南中提到,可以使用 ADMIN SET REPLICA STATUS PROPERTIES
命令来自动修复副本。我们尝试将副本状态设置为 bad
,但发现设置后很快被 FE 自动恢复为ok
状态,并且 clone 副本也消失了。
步骤五:正确设置副本状态为drop
同时我们通过官方文档知道设置为Drop
状态的副本,仍然可以读写,但会在其他机器上先增加一个健康副本,再删除该副本。这个就非常符合我们当前的场景。
使用以下命令设置副本状态为
drop
:ADMIN SET REPLICA STATUS PROPERTIES("tablet_id" = "12034214", "backend_id" = "9697584", "status" = "drop");(注意:将
tablet_id
和backend_id
替换为实际的 tabletId 和 Backend ID,通过 show backends 可以找到 BackendID 和 be 实际 IP 之间的对应关系)其他正常的 BE 会 clone 一个新的副本,然后删除该 BE 上的损坏副本,从而恢复正常读写。
通过以上步骤,王工成功解决了 Doris 查询时遇到的报错问题,并确保了 Doris 系统的稳定性和数据的可靠性。
往期推荐

数据微光 专注分享 Apache Doris 的最佳实践、问题解决技巧、学习资源和实用案例,致力于为开发者和技术爱好者提供高质量内容支持和持续学习动力。
📚 特别福利 | 数据微光知识库内含Apache Doris丰富的 学习资料、实战课程、白皮书、行业报告、技术指南,帮助快速掌握数据库核心技能!
📘 领取方式: 关注 “数据微光” 公众号 扫描下方二维码,备注【Doris】即可免费获取! 💻 让我们携手点亮技术微光,共同探索 Doris 的无限可能!



Apache Doris
Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库,以极易易用的特点被人们所熟知,仅需亚秒级响应时间即可返回海量数据下的查询结果,不仅可以支持高并发发点查询场景,也能支持高吞吐的复杂分析场景。
如果您对 Apache Doris 感兴趣,可以通过以下入口访问官方网站、社区论坛、GitHub 和 dev 邮件组:
📒 官方文档: https://doris.apache.org 💬 社区论坛: https://ask.selectdb.com 📂 GitHub: https://github.com/apache/doris 📧 dev 邮件组: dev@doris.apache.org
可以加 作者微信 (hhj_0530) 直接进 Doris 官方社区群。
PowerData
PowerData 是由一群数据从业人员,因为热爱凝聚在一起,以开源精神为基础,组成的数据开源社区。
社区群内会定期组织模拟面试、线上分享、行业研讨、线下 Meetup、城市聚会、求职内推等活动。同时,在社区群内您可以进行技术讨论、问题请教,结识更多志同道合的数据朋友。
社区整理了一份每日一题汇总及社区分享 PPT,内容涵盖大数据组件、编程语言、数据结构与算法、企业真实面试题等各个领域,帮助您提升自我,成功上岸。
可以加 作者微信 (hhj_0530) 直接进 PowerData 官方社区群。


点击下方蓝字关注我们




