Switch Message Queue
本指南介绍如何在现有 Milvus 部署中,在线且无停机地将消息队列 (MQ) 在 Woodpecker 与另一种消息队列之间 切换。
此功能尚待发布,可能会发生变化。如果你想试用或有任何问题,请联系 Milvus 支持团队。
Prerequisites
- Switch MQ 功能在 Milvus 3.0 及以上版本中可用。 使用前,请先将 Milvus 实例升级到 Milvus 3.0 或以上版本;早期版本不支持该功能。
- 实例正在正常运行。
Scope
本指南仅涵盖 Woodpecker 与其他消息队列之间 的切换。不涉及 Pulsar 与 Kafka 之间的直接切换。
- 在 RocksMQ 与 Woodpecker 之间切换 — Milvus Standalone (Docker Compose)
- 在 Pulsar 与 Woodpecker 之间切换 — Milvus cluster (Helm / Milvus Operator)
- 在 Kafka 与 Woodpecker 之间切换 — Milvus cluster (Helm / Milvus Operator)
General workflow
- 确保 Milvus 实例正常运行。
- 确认源 MQ 类型和目标 MQ 类型。
- 将目标 MQ 的访问设置渲染到 Milvus 配置中,但不要更改
mqType的值。 - 调用 MixCoord 上的 WAL alter API 触发切换。
- 监控日志,确认切换已完成。
切换前,请确保目标 MQ 中不存在与当前 Milvus 实例所使用的 topic 同名的 topic。如果目标 MQ 曾被其他 Milvus 实例使用,这一点尤其重要,因为 topic 名称冲突可能导致非预期行为。
Support matrix
| Source MQ | Target MQ | Deployment | Status |
|---|---|---|---|
| RocksMQ | Woodpecker(local/MinIO) | Standalone(Docker Compose) | 支持 |
| Woodpecker(local/MinIO) | RocksMQ | Standalone(Docker Compose) | 支持 |
| Pulsar(builtin/external) | Woodpecker(MinIO) | Cluster(Helm / Operator) | 支持 |
| Woodpecker(MinIO) | Pulsar(external) | Cluster(Helm / Operator) | 支持 |
| Kafka(builtin/external) | Woodpecker(MinIO) | Cluster(Helm / Operator) | 支持 |
| Woodpecker(MinIO) | Kafka(external) | Cluster(Helm / Operator) | 支持 |
| Woodpecker MinIO | Woodpecker local(或反向切换) | any | 不支持 |
避免反复来回切换 MQ 类型。如果确实需要切换,请确保在每次切换前清理相关数据;残留数据可能导致非预期行为。