Milvus CDC

Milvus CDC(變更資料擷取)將資料變更從一個 Milvus 集群複製到另一個。您可以使用 CDC 為 Milvus 建立主備災難復原拓樸。

在主備災難復原拓樸中,一個群集作為主群集並接受寫入。一個或多個備用群集持續接收主群集的變更,並可提供讀取流量。當主叢集不可用或需要維護時,您可以將服務流量切換到備用叢集。

架構

典型的拓樸結構包含

  • 主要群集:複製的來源群集。它接受讀取和寫入。
  • 備用群集:複製的目標群集。它從主要群集接收變更,並在保持為備用時為唯讀。
  • CDC 節點:一個 Milvus 元件,可將 WAL 變更從目前的主要群集轉送至備用群集。在切換或故障移轉後可能成為主機的每個群集上部署 CDC。
  • 複製拓樸:配置的來源到目標關係,例如群集-a -> 群集-b。 CDC workflowCDC 工作流程

支援的拓樸

最常見的 CDC 部署是一主一備:

Application writes
      |
      v
Primary cluster A  -- CDC replication -->  Standby cluster B

Milvus CDC 也支援單主多備拓樸:

Primary cluster A  -- CDC replication -->  Standby cluster B
                  \-- CDC replication -->  Standby cluster C

Milvus CDC 不支援多主或主動-主動部署,即兩個或更多集群同時接受寫入流量。

主用與備用行為

角色讀取寫入複製行為
主用將變更傳送至備用群集
備用從主群組接收複製的變更

備用群集拒絕直接寫入請求。這可防止腦分裂,並保持複製拓樸一致。

計劃中的切換與故障移轉

Milvus CDC 提供兩種方式將服務流量從目前的主要群集移到備用群集。

操作使用時資料遺失預期行為
切換目前的主機仍可連線,或您正在進行計劃中的維護RPO = 0角色轉換前等待剩餘的複製資料
故障轉換目前的主機不可用,無法快速復原可能立即升級備用,以便恢復寫入

只要目前的主機仍能回應,就使用切換。只有在恢復可用性比等待原始主機更重要時,才使用故障移轉。

CDC 滯後及重要原因

CDC 滯後是指已寫入主要群集但尚未套用至備用群集的資料量。

CDC 滯後會影響兩種復原選項:

  • 在切換期間,較低的 CDC 滯後時間通常表示作業完成得較快。
  • 在故障移轉期間,CDC 滯後時間代表如果原始主集群不可用時可能遺失的資料視窗。

您應持續監控 CDC 滯後並盡可能將其保持在較低水平。Set Up CDC Replication(設定 CDC 複製)頁面包含估算 CDC 滯後時間的 PromQL 示例。

限制

Milvus CDC 目前有以下限制:

  • 它僅支援單主拓樸
  • 支援主動-主動或多主寫入。
  • 備用群集可提供讀取流量,但它們在備用時會拒絕直接寫入。
  • 故障移轉可能會遺失寫入舊主機但尚未複製到備用機的資料。
  • 配置的pchannels 必須符合每個群集的實際通道配置。

常見問題

備用群集可以提供查詢服務嗎?

可以。備用群集可以提供讀取流量。它不能接受寫入,直到它成為主要集群。

Milvus CDC 是否支援主動寫入?

Milvus CDC 是為單主拓樸設計的。同時寫入到多個群集可能會造成腦分裂和資料分歧。

切換會丟失資料嗎?

不會。切換等待剩餘資料複製完畢後,備用才會成為主用。

故障移轉會遺失資料嗎?

會。任何寫入舊主機但尚未複製到備用機的資料都可能遺失。

故障移轉期間可能遺失多少資料?

潛在的資料遺失受主機不可用時的 CDC 滯後所限。