在 RocksMQ 和 Woodpecker 之间切换
本页面介绍了如何在Milvus Standalone部署(Docker Compose)中,双向切换消息队列(MQ)在RocksMQ和Woodpecker(本地或 MinIO 后端)之间的配置。有关一般工作流和先决条件,请参阅《切换消息队列》。
- 先决条件:MQ 切换功能仅在Milvus 3.0 及更高版本中提供。开始操作前,请将您的 Milvus 实例升级至 Milvus 3.0 或更高版本——此功能在早期版本中不可用。
- MQ 切换需要 DockerCompose部署(该部署启用了 etcd 配置源)。单容器 Docker 部署不支持切换。
从 RocksMQ 切换至 Woodpecker
步骤 1:验证 Milvus 实例是否正在运行
请确认您的 Milvus Standalone Docker Compose 实例运行正常——例如,通过创建测试 Collection、插入数据并执行查询来验证。
步骤 2:配置 Woodpecker 存储
在不更改mqType 值的情况下,将 Woodpecker 设置添加到 Milvus 配置中。运行 `docker exec -it milvus-standalone bash ` 进入容器,然后编辑 `/milvus/configs/user.yaml`:
woodpecker:
storage:
type: minio # minio or local
重启 Milvus 实例以应用配置:
docker compose restart
步骤 3:执行 MQ 切换
如果这是您首次切换到 Woodpecker,请跳过此说明。否则,在再次切换之前,请清理残留的 Woodpecker 元数据和数据——残留数据可能会导致意外行为。
curl -X POST http://<mixcoord_addr>:<mixcoord_port>/management/wal/alter \
-H "Content-Type: application/json" \
-d '{"target_wal_name": "woodpecker"}'
MixCoord 端口通常为9091 。
步骤 4:验证切换是否完成
docker logs milvus-standalone | grep "successfully updated mq.type configuration in etcd"
切换成功时会记录[mqTypeValue=woodpecker] 。
步骤 5:(可选)清理 RocksMQ 数据
RocksMQ 数据位于docker-compose.yaml 中定义的volumes/milvus/rdb_data 和volumes/milvus/rdb_data_meta_kv 目录下。如果您计划稍后切换回 RocksMQ,请先清理这些文件以避免冲突。
从 Woodpecker 切换到 RocksMQ
步骤 1:验证 Milvus 实例是否正在运行
确保您的 Milvus Standalone Docker Compose 实例正在正常运行。
步骤 2:执行 MQ 切换
确保实例中没有之前运行留下的 RocksMQ 残留数据。如果您是首次切换到 RocksMQ,请跳过此说明;否则,请先清理相关的 RocksMQ 元数据和数据。
curl -X POST http://<mixcoord_addr>:<mixcoord_port>/management/wal/alter \
-H "Content-Type: application/json" \
-d '{"target_wal_name": "rocksmq"}'
步骤 3:验证切换是否完成
docker logs milvus-standalone | grep "successfully updated mq.type configuration in etcd"
切换成功时会记录日志:[mqTypeValue=rocksmq] 。
步骤 4:(可选)清理 Woodpecker 数据
- 元数据(etcd):Woodpecker 键前缀通常为
woodpecker/...。请通过etcdctl get woodpecker --prefix查看该键,然后将其删除。 - 存储数据:在MinIO 模式下,删除存储桶中
<rootPath>/wp/...下的日志数据(通常位于files/wp/...);在本地模式下,数据位于本地磁盘的volumes/milvus/data/wp/...路径下。
如果您计划稍后切换回 Woodpecker,请先清理这些文件以避免冲突。
支持的场景
| 源 MQ | 目标 MQ | 状态 | 备注 |
|---|---|---|---|
| RocksMQ | Woodpecker (MinIO/本地) | 已支持 | |
| Woodpecker (MinIO/本地) | RocksMQ | 已支持 | |
| Woodpecker MinIO | Woodpecker 本地 | 不支持 | 在 Woodpecker 存储模式之间切换需要额外的元数据处理,目前尚不支持此功能。 |
| Woodpecker 本地 | Woodpecker MinIO | 不支持 | 同上。 |
| RocksMQ / Woodpecker | 外部 Pulsar / Kafka | 受支持但不推荐 | 请尽可能简化独立实例的配置。 |