TiKV 无法启动

TiKV无法启动
环境:windows 虚拟机部署(centos 7.8),TiDB V4.0.8
原因:电脑死机强制重启后启动TiDB界面报(Error: failed to start: failed to start tikv: tikv 192.168.121.128:20160 failed to start: timed out waiting for port 20160 to be started after 2m0s, please check the log of the instance: timed out waiting for port 20160 to be started after 2m0s

文件路劲:/tidb-deploy/tikv-20162/log/tikv.log
[2020/11/17 17:45:44.717 +08:00] [FATAL] [server.rs:345] [“failed to create raft engine: RocksDb Corruption: Can’t access /000041.sst: IO error: No such file or directorywhile stat a file for size: /tidb-data/tikv-20162/raft/000041.sst: No such file or directory\ ”]

可以先参考下面的链接的方式尝试解决下问题:

我试图创建一个000041.sst 还是不行,就是想知道这种是什么原因导致的,感觉问题很多
顺便再问你一个问题:mysql中的自增主键我有很多业务需要用到,按照TiDB的说法自增id并不能保证插入顺序,那这样我岂不是要改业务代码?

1.电脑死机强制重启和生产环境掉电现象都是类似的,也是有可能导致 sst 文件损坏的;
2. TiDB 自增 id 可以保证在单个 tidb server 中递增的,多个 tidb server 之间确实无法保证是递增,可以考虑结合时间戳字段来判断,关于自增的使用可以先参考下面的文档:
https://docs.pingcap.com/zh/tidb/stable/auto-increment#auto_increment

1.那这样还是无法优雅的切换到TiDB,我必须得增加字段解决,谢谢你的回答,明天我用工具修复一下文件损坏问题
2.能不能接下来的版本中优化自增id让它能在集群中能顺序的自增,我觉得的这个对于老业务非常有必要,如果这个不支持感觉有点抛弃那些老项目迁移,像是为新项目准备的

自增 id 在整个集群中单调递增不太好实现,这个是由于其实现原理和 MySQL 略有区别,具体可以参考上面的链接;另外需要注意的是在 TiDB 中使用自增 id 在高频写入的场景下容易引起热点问题,具体可以参考下面的文档说明:
https://docs.pingcap.com/zh/tidb/stable/troubleshoot-hot-spot-issues#tidb-热点问题处理