Milvus CDC

Milvus CDC (Change Data Capture) replica le modifiche dei dati da un cluster Milvus a un altro. È possibile utilizzare CDC per creare una topologia di disaster recovery primaria-standby per Milvus.

In una topologia primario-standby, un cluster agisce come primario e accetta le scritture. Uno o più cluster in standby ricevono continuamente le modifiche dal primario e possono servire il traffico di lettura. Quando il cluster primario diventa indisponibile o necessita di manutenzione, è possibile passare il traffico di servizio a un cluster standby.

Architettura

Una topologia tipica contiene:

  • Cluster primario: Il cluster di origine per la replica. Accetta letture e scritture.
  • Cluster standby: Un cluster di destinazione per la replica. Riceve le modifiche dal primario ed è di sola lettura mentre rimane in standby.
  • Nodo CDC: Un componente Milvus che inoltra le modifiche WAL dall'attuale primario ai cluster in standby. Distribuire CDC su ogni cluster che potrebbe diventare primario dopo il passaggio o il failover.
  • Topologia di replica: La relazione sorgente-target configurata, ad esempio cluster-a -> cluster-b. Di seguito è riportata un'illustrazione della topologia. CDC workflowFlusso di lavoro CDC

Topologie supportate

La distribuzione più comune di CDC prevede un primario e uno standby:

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

Milvus CDC supporta anche una topologia con un solo primario e più standby:

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

Milvus CDC non supporta le distribuzioni multi-primarie o attivo-attivo, in cui due o più cluster accettano il traffico di scrittura allo stesso tempo.

Comportamento primario e standby

RuoloLettureScrittureComportamento di replica
PrimarioInvia le modifiche ai cluster in standby
StandbyNoRiceve le modifiche replicate dal primario

Un cluster in standby rifiuta le richieste di scrittura diretta. In questo modo si evita lo split brain e si mantiene coerente la topologia di replica.

Commutazione pianificata o Failover

Milvus CDC offre due modi per spostare il traffico di servizio dal cluster primario attuale a quello di standby.

FunzionamentoDa utilizzare quandoPerdita di datiComportamento previsto
CommutazioneL'attuale primario è ancora raggiungibile o si sta effettuando una manutenzione programmataRPO = 0Attende i dati replicati rimanenti prima di cambiare ruolo
FailoverIl primario corrente non è disponibile e non può essere ripristinato rapidamentePossibilePromuove immediatamente lo standby in modo che le scritture possano riprendere.

Utilizzare lo switchover ogni volta che il primario corrente può ancora rispondere. Utilizzare il failover solo quando il ripristino della disponibilità è più importante dell'attesa del primario originale.

Il ritardo del CDC e perché è importante

Il ritardo del CDC è la quantità di dati che sono stati scritti sul cluster primario ma non sono ancora stati applicati al cluster di standby.

Il ritardo CDC influisce su entrambe le opzioni di ripristino:

  • Durante lo switchover, un CDC lag più basso significa solitamente che l'operazione viene completata più rapidamente.
  • Durante il failover, il ritardo CDC rappresenta la finestra di dati che potrebbe andare persa se il primario originale non è disponibile.

È necessario monitorare costantemente il ritardo CDC e mantenerlo il più basso possibile. La pagina Impostazione della replica CDC include un esempio PromQL per la stima del ritardo CDC.

Limitazioni

Milvus CDC ha attualmente i seguenti limiti:

  • Supporta solo topologie mono-primarie.
  • Non supporta scritture attive-attive o multiprimarie.
  • I cluster in standby possono servire il traffico di lettura, ma rifiutano le scritture dirette mentre rimangono in standby.
  • Il failover può perdere i dati scritti sul vecchio primario ma non ancora replicati sullo standby.
  • La configurazione di pchannels deve corrispondere al layout effettivo dei canali di ciascun cluster.

DOMANDE FREQUENTI

Un cluster standby può servire query?

Sì, un cluster in standby può servire query. Un cluster standby può servire il traffico in lettura. Non può accettare scritture finché non diventa primario.

Milvus CDC supporta le scritture attivo-attivo?

No. Milvus CDC è stato progettato per una topologia a priorità singola. La scrittura su più cluster contemporaneamente può causare la divisione del cervello e la divergenza dei dati.

Lo switchover fa perdere dati?

No. Lo switchover attende che i dati rimanenti siano replicati prima che lo standby diventi primario.

Il failover fa perdere dati?

È possibile. Tutti i dati scritti sul vecchio primario ma non ancora replicati sullo standby possono andare persi.

Quanti dati possono essere persi durante il failover?

La perdita potenziale di dati è limitata dal ritardo del CDC al momento in cui il primario è diventato non disponibile.