Docker部署Milvus清理存储后无法加载集合求助
解决Milvus集合加载失败(code=101)的实操步骤
1. 先确认集合是否存在
先连接Milvus,排查目标集合是否还存在:
- 用pymilvus执行以下代码:
from pymilvus import connections, Collection connections.connect(host='localhost', port='19530') print(connections.list_collections())
- 或者进入Milvus容器使用milvus_cli:
milvus_cli show collections
如果查不到all_products_collection,说明system prune大概率删除了Milvus的持久化数据卷,这种情况只能通过备份恢复(无备份则数据无法找回)。
2. 集合存在时手动触发加载
确认集合存在后,直接执行加载操作:
- pymilvus方式:
coll = Collection("all_products_collection") coll.load() # 验证加载状态 print(coll.is_loaded())
- milvus_cli方式:
milvus_cli load collection -c all_products_collection
3. 检查持久化存储完整性
先查看Docker中Milvus的持久化卷是否留存:
docker volume ls
找到对应Milvus的卷(默认名称一般为milvus-volume),再检查容器挂载情况:
docker inspect <你的Milvus容器名称> | grep Mounts
若卷已被删除,数据大概率丢失;卷存在的话,可进入卷目录查看data/db、data/segments下是否有完整数据文件。
4. 修复损坏的元数据
如果是元数据损坏导致show collections请求失败,重启容器时添加修复参数:
docker run -d --name milvus \ -v milvus-volume:/var/lib/milvus \ milvusdb/milvus:v2.3.0 standalone \ --meta-repair
替换命令中的版本号为你实际使用的Milvus版本,修复完成后再正常重启容器。
内容的提问来源于stack exchange,提问作者NPatel
相关产品推荐
相关产品推荐

