Milvus CDC

Milvus CDC(변경 데이터 캡처)는 Milvus 클러스터 간에 데이터 변경 사항을 복제합니다. CDC를 사용하여 Milvus의 기본-대기 재해 복구 토폴로지를 구축할 수 있습니다.

기본-대기 토폴로지에서는 하나의 클러스터가 기본 역할을 하며 쓰기를 수락합니다. 하나 이상의 대기 클러스터는 기본 클러스터로부터 지속적으로 변경 사항을 수신하고 읽기 트래픽을 처리할 수 있습니다. 기본 클러스터를 사용할 수 없게 되거나 유지보수가 필요한 경우, 서비스 트래픽을 대기 클러스터로 전환할 수 있습니다.

아키텍처

일반적인 토폴로지는 다음과 같습니다:

  • 기본 클러스터: 복제를 위한 소스 클러스터입니다. 읽기 및 쓰기를 허용합니다.
  • 대기 클러스터: 복제를 위한 대상 클러스터입니다. 주 클러스터로부터 변경 내용을 수신하며 대기 상태인 동안에는 읽기 전용입니다.
  • CDC 노드: 현재 기본 클러스터에서 대기 클러스터로 WAL 변경 사항을 전달하는 Milvus 구성 요소입니다. 전환 또는 장애 조치 후 기본 클러스터가 될 수 있는 각 클러스터에 CDC를 배포합니다.
  • 복제 토폴로지: 클러스터-a -> 클러스터-b와 같이 구성된 소스-대상 관계. 다음은 토폴로지에 대한 그림입니다. CDC workflowCDC 워크플로우

지원되는 토폴로지

가장 일반적인 CDC 배포는 기본 1개와 대기 1개입니다:

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는 두 개 이상의 클러스터가 동시에 쓰기 트래픽을 허용하는 멀티 프라이머리 또는 액티브-액티브 배포를 지원하지 않습니다.

기본 및 대기 동작

역할Reads쓰기복제 동작
기본대기 클러스터에 변경 사항을 전송합니다.
대기아니요기본 클러스터에서 복제된 변경 내용을 수신합니다.

대기 클러스터는 직접 쓰기 요청을 거부합니다. 이렇게 하면 브레인 분할을 방지하고 복제 토폴로지를 일관되게 유지할 수 있습니다.

계획된 전환 대 페일오버

Milvus CDC는 현재 기본 클러스터에서 대기 클러스터로 서비스 트래픽을 이동하는 두 가지 방법을 제공합니다.

운영다음 경우에 사용데이터 손실예상되는 동작
전환현재 주 서버에 여전히 연결할 수 있거나 계획된 유지 관리를 수행 중입니다.RPO = 0역할이 변경되기 전에 나머지 복제된 데이터를 기다립니다.
페일오버현재 프라이머리를 사용할 수 없으며 신속하게 복구할 수 없습니다.가능쓰기가 재개될 수 있도록 즉시 대기 상태로 전환합니다.

현재 프라이머리가 여전히 응답할 수 있을 때마다 전환을 사용합니다. 원래 기본값을 기다리는 것보다 가용성을 복원하는 것이 더 중요한 경우에만 장애 조치를 사용합니다.

CDC 지연과 이것이 중요한 이유

CDC 지연은 기본 클러스터에 기록되었지만 아직 대기 클러스터에 적용되지 않은 데이터의 양을 말합니다.

CDC 지연은 두 복구 옵션 모두에 영향을 줍니다:

  • 전환 중에는 일반적으로 CDC 지연이 낮을수록 작업이 더 빨리 완료됩니다.
  • 장애 조치 중에 CDC 지연은 원래 기본 클러스터를 사용할 수 없는 경우 손실될 수 있는 데이터 창을 나타냅니다.

CDC 지연을 지속적으로 모니터링하고 가능한 한 낮게 유지해야 합니다. CDC 복제 설정 페이지에는 CDC 지연을 추정하기 위한 PromQL 예제가 포함되어 있습니다.

제한 사항

Milvus CDC에는 현재 다음과 같은 제한 사항이 있습니다:

  • 단일 프라이머리 토폴로지만 지원합니다.
  • 액티브-액티브 또는 멀티 프라이머리 쓰기는 지원하지 않습니다.
  • 대기 클러스터는 읽기 트래픽을 처리할 수 있지만 대기 상태에서는 직접 쓰기를 거부합니다.
  • 장애 조치로 인해 이전 프라이머리에 기록되었지만 아직 스탠바이에 복제되지 않은 데이터가 손실될 수 있습니다.
  • 구성된 pchannels 은 각 클러스터의 실제 채널 레이아웃과 일치해야 합니다.

FAQ

대기 클러스터에서 쿼리를 처리할 수 있나요?

예. 대기 클러스터는 읽기 트래픽을 처리할 수 있습니다. 기본 클러스터가 되기 전까지는 쓰기를 허용할 수 없습니다.

Milvus CDC는 액티브-액티브 쓰기를 지원하나요?

아니요. Milvus CDC는 단일 프라이머리 토폴로지를 위해 설계되었습니다. 여러 클러스터에 동시에 쓰면 두뇌와 데이터가 분산될 수 있습니다.

전환 시 데이터가 손실되나요?

아니요. 전환은 대기 상태가 기본 상태가 되기 전에 나머지 데이터가 복제될 때까지 기다립니다.

장애 조치로 인해 데이터가 손실되나요?

손실될 수 있습니다. 이전 기본 데이터에 기록되었지만 아직 대기 데이터로 복제되지 않은 모든 데이터가 손실될 수 있습니다.

장애 조치 중에 얼마나 많은 데이터가 손실될 수 있나요?

잠재적인 데이터 손실은 기본 계정을 사용할 수 없게 된 시점의 CDC 지연에 의해 제한됩니다.