tikv里的sst文件误删除怎么处理

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】进入到 TiDB Dashboard -集群信息 (Cluster Info) -主机(Hosts) 截图此页面
【附件:截图/日志/监控】


如果是3个tikv,删掉其中一个,数据不会丢,但集群不可用。
可以新找个机器,动态扩容一个新的tikv,集群就恢复可用了。之后尝试把这个出问题的tikv节点下线。
如果tikv的数量超过3个,数据不会丢,集群也是可用的,其他tikv负载不高的情况下,可以尝试下线这个有问题的节点。在动态扩容到这个有问题的节点上。

专栏里面有一篇文章是你这个类似的情况,但里面的内容我没有尝试过。
你可以试试看。

tidb 是分布式系统。 分布式系统最大的好处三副本容灾机制。 删除一个无所谓, 仅仅丢失一个节点,业务高可用,没问题,后续再增加一个即可。

3副本的没有太大影响,只是删掉一个sst文件的话,直接用命令tikv-ctl bad-ssts补充一个即可,如果删多了,建议直接新增tikv节点之后,将损坏的tikv节点缩容掉。

你是单节点吗?

是的单节点

在 TiDB 6.4.0 版本中,您可以使用 TiKV Control 工具来强制下线或者忽略掉 SST 文件。具体步骤如下:

  1. 停止 TiKV 实例,可以使用以下命令:

    tiup cluster stop <cluster-name> -N <tikv-node1>:<tikv-port>,<tikv-node2>:<tikv-port>
    
  2. 使用 TiKV Control 工具查找需要下线或者忽略掉的 SST 文件,可以使用以下命令:

    tikv-ctl --db <db-path> --cmd unsafe-recover remove-fail-stores
    

    其中,<db-path> 是 TiKV 数据目录的路径。

  3. 根据输出的 SST 文件信息,选择需要下线或者忽略掉的 SST 文件,可以使用以下命令:

    tikv-ctl --db <db-path> --cmd unsafe-recover remove-fail-stores --ssts <sst-file1>,<sst-file2>,...
    

    其中,<sst-file1>,<sst-file2>,... 是需要下线或者忽略掉的 SST 文件的路径,多个文件之间使用逗号分隔。

  4. 启动 TiKV 实例,可以使用以下命令:

    tiup cluster start <cluster-name> -N <tikv-node1>:<tikv-port>,<tikv-node2>:<tikv-port>
    

需要注意的是,强制下线或者忽略掉 SST 文件可能会导致数据丢失或者数据不一致,因此在操作之前需要谨慎评估风险。

1 个赞


报这个错误

此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。