切換 Milvus 單機的 MQ 類型

本主題描述如何切換現有 Milvus 獨立部署的訊息佇列 (MQ) 類型。Milvus 支援線上 MQ 切換,無須停機。

此功能尚待發佈,可能會有所變更。如果您想試用或有任何問題,請聯絡 Milvus 支援。

先決條件

  • 透過DockerDocker Compose 安裝正在執行的 Milvus 獨立實例。
  • Milvus 實例已升級至支援此 Switch MQ 功能的最新版本。

一般工作流程

切換 MQ 類型的一般工作流程如下:

  1. 確保 Milvus 實例正常執行。
  2. 確認來源 MQ 類型和目標 MQ 類型。
  3. 將目標 MQ 的存取設定配置到 Milvus 設定中,但不變更mqType 值。
  4. 透過呼叫 WAL alter API 來觸發切換。
  5. 監控日誌以驗證切換已成功完成。

切換前,請確保目標 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 中更新。