写点什么

记一次 sst 文件损坏修复过程

  • 2023-07-21
    北京
  • 本文字数:1169 字

    阅读完需:约 4 分钟

作者: 像风一样的男子原文来源:https://tidb.net/blog/54e388c8

一、背景

【2023-07-14 14:26:28】应用系统报警删除数据失败,查看日志报 Region is unavailable,同时企业微信群也收到数据库告警信息。



二、问题定位

首先查看集群进程都正常,登录 tidb dashboard 查看日志。




登录 tidb 节点 10.20.10.127 查看详细日志,定位到是 region_id 是 2435254 出问题的



通过 pd-ctl 查看 region 详情



发现 region 正常,通过 navicat 查询上面删除数据一切正常,手动删除数据也正常,因为这张表插入删除数据很频繁,一度以为是中奖了,正好在 region 分裂、合并时访问到这个 region 导致删除失败的。


直到 2023-07-15 日查看 tidb 日志发现又有同样情况出现,继续深入查看发现是同一个 kv 报错,如下截图是日志信息



这时候社区大佬提醒是不是有 sst 文件出现了损坏,建议停止该 kv 逐个检查 sst 文件。

三、修复

官方文档提供了修复损坏的 SST 的方法。



根据官方文档提供的命令使用 bad-ssts 检测有问题的 sst 文件,尝试使用 –data-dir 指定 data-dir 目录报参数错误,使用了 tikv-ctl + –db 参数后执行正常。


tikv-ctl bad-ssts –db /data/tidb-data/tikv-20160/db –pd 10.20.10.63:2379



检查了一个多小时,有 10 个 sst 文件需要修复,并列出了操作建议。



第一步:删除损坏的 sst 文件


按照上述输出的建议命令执行 tikv-ctl ldb –db=/data/tidb-data/tikv-20160/db unsafe_remove_sst_file “/data/tidb-data/tikv-20160/db/10973719.sst”,报错:Failed: Failed to parse SST file number /data/tidb-data/tikv-20160/db/10973719.sst 。在社区中查看发现需要使用指定 sst 的文件号而不是文件名,使用 sst 文件号执行成功!


第二步从有问题的 tikv 上删除 sst 文件的 region peer


tikv-ctl –db=/data/tidb-data/tikv-20160/db tombstone -r 2336448 –pd


该命令同样在 –data-dir/–db/–pd 参数使用上报错,最后使用 tikv-ctl –data-dir=/data/tidb-data/tikv-20160 tombstone -r 2336448 –force 处理成功,这里建议官方能把这块的文档完善下(也有可能是我用的版本太老了)。



至此官方建议的修复步骤就执行完了,重启 tikv 节点。


查看之前访问报错的数据已经正常。


然后再看了下 kv 节点的日志,发现一直在循环刷同一段日志,而且 tidb 告警信息 PD_down_peer_region_nums 还是一直在推送。




在 pd 监控大屏 healthregion 中发现有 82 个 region 处于 down_peer_region 状态


通过 pd-ctl 的 region check down-peer 查看副本状态为 Down 的 Region,通过 region 命令查看 region 的 down_peer 的 store_id 为刚修复的 tikv 节点。



通过 pd-ctl operator add remove-peer 2556939 1133876 手动删除 tikv 中副本



不用担心 region 只有 2 个副本会出问题,pd 会自动复制一份副本到其他 kv 节点。


至此整个修复完成,集群恢复正常。


发布于: 刚刚阅读数: 4
用户头像

TiDB 社区官网:https://tidb.net/ 2021-12-15 加入

TiDB 社区干货传送门是由 TiDB 社区中布道师组委会自发组织的 TiDB 社区优质内容对外宣布的栏目,旨在加深 TiDBer 之间的交流和学习。一起构建有爱、互助、共创共建的 TiDB 社区 https://tidb.net/

评论

发布
暂无评论
记一次sst文件损坏修复过程_故障排查/诊断_TiDB 社区干货传送门_InfoQ写作社区