Milvus CDC

Milvus CDC (Change Data Capture) mereplikasi perubahan data dari satu kluster Milvus ke kluster lainnya. Anda dapat menggunakan CDC untuk membangun topologi pemulihan bencana primer-standby untuk Milvus.

Dalam topologi primer-standby, satu kluster bertindak sebagai kluster primer dan menerima penulisan data. Satu atau lebih kluster standby secara terus-menerus menerima perubahan dari kluster primer dan dapat melayani lalu lintas pembacaan. Ketika kluster primer tidak tersedia atau memerlukan pemeliharaan, Anda dapat mengalihkan lalu lintas layanan ke kluster standby.

Arsitektur

Topologi tipikal terdiri dari:

  • Cluster primer: Cluster sumber untuk replikasi. Cluster ini menerima permintaan baca dan tulis.
  • Kluster siaga: Kluster tujuan untuk replikasi. Kluster ini menerima perubahan dari kluster utama dan bersifat hanya baca selama masih berstatus siaga.
  • Node CDC: Komponen Milvus yang meneruskan perubahan WAL dari kluster utama saat ini ke kluster siaga. Terapkan CDC pada setiap kluster yang mungkin menjadi kluster utama setelah peralihan atau failover.
  • Topologi replikasi: Hubungan sumber-ke-tujuan yang telah dikonfigurasi, seperti cluster-a -> cluster-b. Berikut ini adalah ilustrasi topologi tersebut. CDC workflow Alur kerja CDC

Topologi yang Didukung

Penerapan CDC yang paling umum adalah satu kluster primer dan satu kluster standby:

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

Milvus CDC juga mendukung topologi satu primer dan beberapa cadangan:

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

Milvus CDC tidak mendukung penerapan multi-primer atau aktif-aktif, di mana dua atau lebih kluster menerima lalu lintas penulisan pada saat yang sama.

Perilaku Primer dan Cadangan

PeranPembacaanPenulisanPerilaku replikasi
PrimerYaYaMengirimkan perubahan ke kluster standby
StandbyYaTidakMenerima perubahan yang direplikasi dari kluster primer

Sebuah kluster siaga menolak permintaan penulisan langsung. Hal ini mencegah terjadinya "split brain" dan menjaga konsistensi topologi replikasi.

Peralihan Terjadwal vs. Failover

Milvus CDC menyediakan dua cara untuk mengalihkan lalu lintas layanan dari server utama saat ini ke kluster siaga.

OperasiGunakan saatKehilangan dataPerilaku yang diharapkan
PeralihanSistem utama saat ini masih dapat diakses, atau Anda sedang melakukan pemeliharaan terjadwalRPO = 0Menunggu data replikasi yang tersisa sebelum terjadi pergantian peran
Peralihan daruratServer utama saat ini tidak tersedia dan tidak dapat dipulihkan dengan cepatMungkinSegera mempromosikan server siaga agar penulisan data dapat dilanjutkan

Gunakan switchover setiap kali server utama saat ini masih dapat merespons. Gunakan failover hanya jika memulihkan ketersediaan lebih penting daripada menunggu server utama yang asli.

Keterlambatan CDC dan Mengapa Hal Ini Penting

Keterlambatan CDC adalah jumlah data yang telah ditulis ke kluster primer tetapi belum diterapkan ke kluster standby.

Keterlambatan CDC memengaruhi kedua opsi pemulihan:

  • Selama switchover, CDC lag yang lebih rendah biasanya berarti operasi selesai lebih cepat.
  • Selama failover, CDC lag mewakili jendela data yang mungkin hilang jika server utama asli tidak tersedia.

Anda harus memantau CDC lag secara terus-menerus dan menjaganya agar tetap serendah mungkin. Halaman Set Up CDC Replication menyertakan contoh PromQL untuk memperkirakan CDC lag.

Impor Massal dalam Replikasi CDC

Dalam topologi replikasi CDC, impor massal harus menggunakan mode two-phase commit (2PC) dengan opsi ` auto_commit=false`. Jalankan proses impor dan commit hanya pada kluster primer, serta pastikan berkas impor tersedia bagi kluster primer dan kluster cadangan. Untuk detailnya, lihat bagian " Impor Massal dalam Replikasi CDC".

Batasan

Milvus CDC saat ini memiliki batasan-batasan berikut:

  • Hanya mendukung topologi dengan satu kluster primer.
  • Tidak mendukung penulisan aktif-aktif atau multi-primer.
  • Kluster siaga dapat melayani lalu lintas baca, tetapi menolak penulisan langsung selama masih berstatus siaga.
  • Proses failover mungkin kehilangan data yang telah ditulis ke primer lama tetapi belum direplikasi ke kluster siaga.
  • pchannels yang dikonfigurasi harus sesuai dengan tata letak saluran aktual dari setiap kluster.

Pertanyaan Umum

Apakah kluster standby dapat melayani kueri?

Ya. Kluster siaga dapat menangani lalu lintas baca. Kluster tersebut tidak dapat menerima penulisan hingga menjadi kluster primer.

Apakah Milvus CDC mendukung penulisan aktif-aktif?

Tidak. Milvus CDC dirancang untuk topologi dengan satu kluster utama. Penulisan ke beberapa kluster secara bersamaan dapat menyebabkan "split brain" dan ketidaksesuaian data.

Apakah proses peralihan (switchover) menyebabkan kehilangan data?

Tidak. Proses peralihan menunggu hingga data yang tersisa direplikasi sebelum kluster siaga menjadi kluster utama.

Apakah proses failover menyebabkan kehilangan data?

Bisa saja. Data apa pun yang ditulis ke server utama lama tetapi belum direplikasi ke server cadangan mungkin akan hilang.

Berapa banyak data yang dapat hilang selama failover?

Potensi kehilangan data dibatasi oleh CDC lag pada saat server primer menjadi tidak tersedia.