milvus的etcd受损如何恢复 #50382
-
|
我服务器的milvus在使用过程里,受损原因就不提了,我etcd受损,致命错误是 wal: crc mismatch。 但minio是完整的,我把etcd删除,milvus就能正常运行,但数据无法显示。 备份数据也存在受损,为数不多的几个能用的备份,能恢复的数据也没多少。 我想问有没有办法能通过minio恢复etcd或把minio的数据直接写入一个新的集合里,或者minio的数据转成可查看的数据,后面整成xlsx也行。向量化数据可以不要。老数据就一个集合而且我知道对应字段结构。我milvus写入的是纯sring格式数据,外加milvus的动态字段。 |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 3 replies
-
|
通过minio数据恢复etcd不太现实,只能想办法把minio中的数据导入到新的milvus server里。 |
Beta Was this translation helpful? Give feedback.





milvus v2.6.0-rc1 使用的storage version是v1,从v2.6.1之后的版本都是用的 storage version V2
所以milvus v2.6.0-rc1的数据存储方式和2.5相似,我用v2.5.18来模拟你的这种情况。
假设我之前创建了一张表,表里有3个字段分别是ID(int64), vector(dim=1024), desc(varchar max_length=100)。虽然你的etcd数据搞丢了,在milvus里看不到这张表,但如果你打开minio的管理界面(minio默认端口9091,在浏览器里打开
http://localhost:9001) ,则会看到这张表的存储数据。如果只有一张表,在/a-bucket/files/insert_log/ 路径下只会有一个路径,按照 collection_id/partition_id/segment_id/ 的路径组织数据。如果数据量大的话,collection_id/partition_id/ 下面会有很多子目录,每个子目录都是一个segment。有的segment如果是刚被delete的,则它的子目录仍然会保留一段时间,直到GC逻辑来清理。如果你的表长时间没有什么dml动作的话,剩下的那些子目录应该都是有效数据。
接着,把files这个目录整个download下来,并解压到硬盘上,重命名为 backup_data
接着我启动一个新的milvus standalone,浏览器打开
http://localhost:9001/,此时minio是空的。点击upload按钮把那个b…