切換 Milvus 單機的 MQ 類型
本主題描述如何切換現有 Milvus 獨立部署的訊息佇列 (MQ) 類型。Milvus 支援線上 MQ 切換,無須停機。
此功能尚待發佈,可能會有所變更。如果您想試用或有任何問題,請聯絡 Milvus 支援。
先決條件
- 透過Docker或Docker Compose 安裝正在執行的 Milvus 獨立實例。
- Milvus 實例已升級至支援此 Switch MQ 功能的最新版本。
一般工作流程
切換 MQ 類型的一般工作流程如下:
- 確保 Milvus 實例正常執行。
- 確認來源 MQ 類型和目標 MQ 類型。
- 將目標 MQ 的存取設定配置到 Milvus 設定中,但不變更
mqType值。 - 透過呼叫 WAL alter API 來觸發切換。
- 監控日誌以驗證切換已成功完成。
切換前,請確保目標 MQ 不包含與目前 Milvus 實例所用名稱相同的主題。如果目標 MQ 服務之前曾被其他 Milvus 實例使用,這一點尤其重要,因為主題名稱衝突可能導致意想不到的行為。
從 RocksMQ 切換到 Woodpecker (本地儲存)
本步驟適用於預設使用 RocksMQ 的Milvus Standalone Docker部署。
步驟 1: 確認 Milvus 實例正在執行中
確保你的 Milvus Standalone Docker 實例運行正常。您可以透過建立測試集合、插入資料並執行查詢來驗證。
步驟 2:使用本機儲存配置 Woodpecker
更新 Milvus 設定,新增 Woodpecker 設定,但不變更mqType 值。使用以下內容建立或更新user.yaml 檔案:
woodpecker:
storage:
type: local
然後重新啟動 Milvus 實例以套用組態:
bash standalone_embed.sh restart
步驟 3:執行 MQ 切換
執行以下指令以觸發切換至 Woodpecker:
curl -X POST http://<mixcoord_addr>:9091/management/wal/alter \
-H "Content-Type: application/json" \
-d '{"target_wal_name": "woodpecker"}'
將<mixcoord_addr> 改為 MixCoord 服務的實際位址(預設為單機部署的localhost )。
步驟 4:驗證切換完成
切換過程會自動完成。監控 Milvus 日誌中的下列關鍵訊息,以確認切換已完成:
WAL switch success: <MQ1> switch to <MQ2> finish, re-opening required
AlterWAL broadcast message acknowledged by all vchannels
successfully updated mq.type configuration in etcd
在上面的日誌訊息中,<MQ1> 是來源 MQ 類型 (rocksmq),而<MQ2> 是目標 MQ 類型 (woodpecker)。
- 第一條訊息表示從原始碼到目標的 WAL 切換已經完成。
- 第二條訊息表示所有實體通道都已完成切換。
- 第三個訊息表示
mq.type的配置已經在 etcd 中更新。
從 RocksMQ 切換到 Woodpecker (MinIO 儲存)
此程序適用於Milvus Standalone Docker Compose部署。
從 Milvus v2.6 開始,預設的docker-compose.yaml 已宣告mqType 為 Woodpecker。除非您修改了預設配置或從 v2.5 升級,否則可能不需要此步驟。
步驟 1:確認 Milvus 實例正在運行
確保您的 Milvus Standalone Docker Compose 實例正常執行。
步驟 2:(可選)驗證 Woodpecker 配置
預設的 Milvus 配置已經將 Woodpecker 儲存類型設定為 MinIO,因此在大多數情況下不需要額外的配置。
但是,如果您之前自訂了 Woodpecker 配置,則必須確保woodpecker.storage.type 設定為minio 。使用以下內容建立或更新user.yaml 檔案:
woodpecker:
storage:
type: minio
然後重新啟動 Milvus 實例以套用組態:
docker compose down
docker compose up -d
步驟 3:執行 MQ 切換
執行以下指令來觸發切換到 Woodpecker:
curl -X POST http://<mixcoord_addr>:9091/management/wal/alter \
-H "Content-Type: application/json" \
-d '{"target_wal_name": "woodpecker"}'
將<mixcoord_addr> 改為 MixCoord 服務的實際位址(預設為單機部署的localhost )。
步驟 4:驗證切換完成
切換過程會自動完成。監控 Milvus 日誌中的下列關鍵訊息,以確認切換已完成:
WAL switch success: <MQ1> switch to <MQ2> finish, re-opening required
AlterWAL broadcast message acknowledged by all vchannels
successfully updated mq.type configuration in etcd
在上面的日誌訊息中,<MQ1> 是來源 MQ 類型 (rocksmq),而<MQ2> 是目標 MQ 類型 (woodpecker)。
- 第一條訊息表示從原始碼到目標的 WAL 切換已經完成。
- 第二條訊息表示所有實體通道都已完成切換。
- 第三條訊息表示
mq.type配置已在 etcd 中更新。