storaged节点无法启动



使用的nebula 3.3.0 版本,docker-compose 使用为官方配置,其中 storaged 默认为3个节点,storaged0 正常启动,storaged1、storaged2 无法启动

:thinking: 你之前不是已经启动过了么?在你上一个帖子里?是重新部署了一套环境,然后现在启动有问题么?add host 命令加过么?加了 1 个 storage 还是 3 个?

还是之前的环境,没有变动docker-compose.yml 文件,另外周末服务器异常断电过。

sst文件还有wal文件可能都损坏了,不排除跟异常断电有关(目前写入没有fsync)。你可以试试把1和2数据删掉,然后storage0的数据复制到storage1和storage2启动。

2 个赞

请问 数据在三个节点都会存储一份吗,那么可能存在宕机前的某一时间部分数据没有同步,造成数据丢失。

三个节点都会有一份,已经报给客户端成功写入的不会丢,正在写入过程且没有报给客户端的数据,如果此时断电可能会丢

按操作发现 断电前一天的数据都有部分丢失,包括点和边, storage服务已经可以启动了

:thinking: 数据部分丢失有啥日志之类的么?是成功写入之后,过段时间去查,发现它有些数据没了?还是写入的时候部分失败了?

写入成功了并且可以查到, storage服务发生过断电情况 , storage_1和 storage_2 无法启动,然后storage0的数据复制到storage1和storage2 后发生部分数据丢失。操作如3楼所述

原来你说的数据部分丢失是替换之后的呀。

有关于架构这一块的文档吗,需要了解下 storage存储是按hash还是怎么样分开存的,或者说相同的数据三个storage都会有一份

可以看看这个。挺详细的,如果有啥其他问题,可以论坛发帖哈。

nebula的wal可能会损坏,但是rocksdb的sst文件应该不会损坏吧,rocksdb的wal会有crc校验,crc校验错了,就停止回放,最多也就是丢失一点数据吧,