在 RocksMQ 和 Woodpecker 之间切换

本页面介绍了如何在Milvus Standalone部署(Docker Compose)中,双向切换消息队列(MQ)在RocksMQWoodpecker(本地或 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_datavolumes/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状态备注
RocksMQWoodpecker (MinIO/本地)已支持
Woodpecker (MinIO/本地)RocksMQ已支持
Woodpecker MinIOWoodpecker 本地不支持在 Woodpecker 存储模式之间切换需要额外的元数据处理,目前尚不支持此功能。
Woodpecker 本地Woodpecker MinIO不支持同上。
RocksMQ / Woodpecker外部 Pulsar / Kafka受支持但不推荐请尽可能简化独立实例的配置。