Milvus CDC
Milvus CDC(變更資料擷取)將資料變更從一個 Milvus 集群複製到另一個。您可以使用 CDC 為 Milvus 建立主備災難復原拓樸。
在主備災難復原拓樸中,一個群集作為主群集並接受寫入。一個或多個備用群集持續接收主群集的變更,並可提供讀取流量。當主叢集不可用或需要維護時,您可以將服務流量切換到備用叢集。
架構
典型的拓樸結構包含
- 主要群集:複製的來源群集。它接受讀取和寫入。
- 備用群集:複製的目標群集。它從主要群集接收變更,並在保持為備用時為唯讀。
- CDC 節點:一個 Milvus 元件,可將 WAL 變更從目前的主要群集轉送至備用群集。在切換或故障移轉後可能成為主機的每個群集上部署 CDC。
- 複製拓樸:配置的來源到目標關係,例如群集-a -> 群集-b。
CDC 工作流程
支援的拓樸
最常見的 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 滯後所限。