切换消息队列
本指南介绍了如何将现有 Milvus 部署的消息队列 (MQ)在 Woodpecker 与另一个消息队列之间进行切换,该操作可在不影响服务的情况下在线完成,且不会造成停机。
此功能尚待发布,具体内容可能会有变动。如果您想试用该功能或有任何疑问,请联系 Milvus 支持团队。
先决条件
- “切换消息队列”功能仅在 Milvus 3.0 及更高版本中提供。使用前请将您的 Milvus 实例升级至 Milvus 3.0 或更高版本——此功能在早期版本中不可用。
- 实例运行正常。
适用范围
本指南仅涵盖在 Woodpecker 与另一消息队列之间进行切换的情况。Pulsar 与 Kafka 之间的直接切换不在本指南范围内。
- 在 RocksMQ 和 Woodpecker 之间切换— Milvus Standalone(Docker Compose)
- 在 Pulsar 和 Woodpecker 之间切换— Milvus 集群(Helm / Milvus Operator)
- 在 Kafka 和 Woodpecker 之间切换— Milvus 集群(Helm / Milvus Operator)
通用工作流
- 确保 Milvus 实例运行正常。
- 确认源 MQ 类型和目标 MQ 类型。
- 将目标MQ的访问设置映射到Milvus配置中,同时保持
mqType的值不变。 - 通过在 MixCoord 上调用 WAL alter API 触发切换。
- 监控日志以确认切换已完成。
切换前,请确保目标MQ中不包含与当前Milvus实例所用主题名称相同的主题。如果目标MQ曾被另一个Milvus实例使用过,这一点尤为重要,因为主题名称冲突可能会导致意外行为。
支持矩阵
| 源MQ | 目标消息队列 | 部署 | 状态 |
|---|---|---|---|
| RocksMQ | Woodpecker(本地/MinIO) | 独立部署(Docker Compose) | 已支持 |
| Woodpecker(本地/MinIO) | RocksMQ | 独立部署(Docker Compose) | 已支持 |
| Pulsar(内置/外部) | Woodpecker(MinIO) | 集群(Helm / Operator) | 已支持 |
| Woodpecker(MinIO) | Pulsar(外部) | 集群(Helm / Operator) | 已支持 |
| Kafka(内置/外部) | Woodpecker(MinIO) | 集群(Helm / Operator) | 已支持 |
| Woodpecker(MinIO) | Kafka(外部) | 集群(Helm / Operator) | 已支持 |
| Woodpecker MinIO | Woodpecker 本地(或反之) | 任意 | 不支持 |
请避免反复在不同MQ类型之间切换。如果确实需要切换,请确保在每次切换前清理相关数据——残留数据可能会导致意外行为。