在 RocksMQ 與 Woodpecker 之間切換

本頁面說明如何將Milvus 獨立部署(Docker Compose)中的訊息佇列(MQ)在RocksMQWoodpecker(本機或 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_datavolumes/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狀態備註
RocksMQWoodpecker (MinIO/本地)已支援
Woodpecker (MinIO/本地)RocksMQ已支援
Woodpecker MinIOWoodpecker 本地不支援在 Woodpecker 儲存模式之間切換需要額外的元資料處理,此功能目前尚未支援。
Woodpecker 本地Woodpecker MinIO不支援與上文相同。
RocksMQ / Woodpecker外部 Pulsar / Kafka受支援但不建議使用請盡可能簡化獨立執行個體的架構。