在 RocksMQ 與 Woodpecker 之間切換
本頁面說明如何將Milvus 獨立部署(Docker Compose)中的訊息佇列(MQ)在RocksMQ與Woodpecker(本機或 MinIO 後端)之間進行雙向切換。有關一般工作流程與先決條件,請參閱《切換訊息佇列》。
- 先決條件:MQ 切換功能僅適用於Milvus 3.0 及後續版本。開始操作前,請將您的 Milvus 實例升級至 Milvus 3.0 或後續版本 — 此功能在較早版本中不可用。
- 切換訊息佇列需採用 DockerCompose部署模式(此模式會啟用 etcd 配置來源)。單容器 Docker 部署模式不支援此切換功能。
從 RocksMQ 切換至 Woodpecker
步驟 1:確認 Milvus 執行個體正在運行
請確認您的 Milvus 獨立 Docker Compose 實例運作正常 — 例如,建立測試集合、插入資料並執行查詢。
步驟 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 獨立 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 | 受支援但不建議使用 | 請盡可能簡化獨立執行個體的架構。 |