MongoDB용 Openflow 커넥터 사용

MongoDB용 Openflow 커넥터 사용

이 문서에서는 MongoB용 Openflow 커넥터를 설치하고 구성한 뒤 사용하는 방법을 설명합니다.

출처: Snowflake 문서

본문

MongoDB의 데이터 변경 추적

커넥터는 증분 동기화를 위해 MongoDB change streams를 사용하며, 전체 MongoDB 배포(replica sets 또는 sharded clusters)에 걸친 데이터 변경을 구독합니다. 커넥터는 변경이 replica set 구성원의 과반에 영속된 뒤에만 처리합니다.

커넥터는 change stream에서 insert, update, delete를 듣고 이를 Snowflake의 저널(journal) 테이블에 기록합니다. 커넥터는 이러한 저널 테이블을 관리하며 이를 사용해 목적지 테이블에 데이터를 병합합니다.

경고: 저널 테이블을 수정하지 마세요. 수동 수정은 동기화를 방해하고 데이터 무결성을 훼손할 수 있습니다.

병합 작업은 변경을 다음과 같이 처리합니다.

  • Insert와 update: 커넥터는 INSERT와 UPDATE 연산을 Snowflake 테이블에 업서트(upsert)합니다.
  • Delete: 커넥터는 히스토리를 보존하기 위해 소프트 삭제(soft-delete) 전략을 사용합니다. 행을 삭제하는 대신 대상 행의 _SNOWFLAKE_DELETED 열을 TRUE로 설정해 업데이트합니다. 커넥터는 생성 시 목적지 테이블에 _SNOWFLAKE_DELETED(BOOLEAN) 열을 추가합니다.

연결 복구

change stream에 대한 연결이 끊어지면 커넥터는 다른 클러스터 노드를 통해 재연결을 시도합니다. 데이터 일관성을 보장하기 위해 커넥터는 마지막으로 처리한 문서의 재개 토큰(resume token)을 추적합니다. 재연결 시 이 토큰을 사용해 연결이 끊긴 이후 발생한 변경만 검색합니다.

MongoDB Oplog는 중단 중 변경 내역을 보존할 만큼 커야 합니다. 커넥터가 Oplog 보존 기간보다 오래 오프라인 상태면 재개 토큰이 만료되어 전체 데이터 재동기화가 필요할 수 있습니다.

컬렉션을 복제에서 제거하고 다시 추가

컬렉션을 복제에서 제거하려면:

  • MongoDB ingestion parameters 컨텍스트의 Included Collection Names 또는 Included Collection Regex 파라미터에서 제거하세요.

컬렉션을 복제에 다시 추가하려면:

  • Snowflake에서 해당 목적지 테이블을 삭제하세요.
  • Included Collection Names 또는 Included Collection Regex 파라미터에 컬렉션을 다시 추가하세요.

이렇게 하면 해당 컬렉션에 대한 복제 프로세스가 새로 시작됩니다. 이 제거 후 재추가 절차는 실패한 복제에서 복구하는 데도 사용할 수 있습니다.

컬렉션의 복제 상태 확인

연결 오류 같은 일시적 실패는 컬렉션 복제를 막지 않습니다. 그러나 지원되지 않는 데이터 같은 영구 실패는 컬렉션 복제를 막습니다.

복제 문제를 해결하거나 컬렉션이 복제 흐름에서 성공적으로 제거되었는지 확인하려면 Collection State Store를 확인하세요.

  • Openflow 런타임 캔버스에서 프로세스 그룹을 마우스 오른쪽 버튼으로 클릭하고 Controller Services를 선택하세요. 컨트롤러 서비스 목록이 표시됩니다.
  • Collection State Store 레이블이 있는 행을 찾아 행 오른쪽의 More 버튼을 클릭하고 View State를 선택하세요.

컬렉션과 현재 상태 목록이 표시됩니다. 검색 상자로 컬렉션 이름별로 목록을 필터링할 수 있습니다. 가능한 상태는 다음과 같습니다.

  • NEW: 컬렉션이 복제 예정이지만 복제가 시작되지 않았습니다.
  • SNAPSHOT_REPLICATION: 커넥터가 기존 문서를 복사 중입니다. 모든 문서가 목적지 테이블에 저장될 때까지 이 상태가 표시됩니다.
  • INCREMENTAL_REPLICATION: 커넥터가 변경을 활발히 복제 중입니다. 이 상태는 스냅샷 복제가 끝난 뒤 표시되며, 컬렉션이 복제에서 제거되거나 복제가 실패할 때까지 계속 표시됩니다.
  • FAILED: 오류로 인해 복제가 영구적으로 중지되었습니다.

참고: Openflow 런타임 캔버스는 상태 변경을 표시하지 않고 현재 상태만 표시합니다. 그러나 상태 변경은 발생 시 로그에 기록됩니다.

영구 실패가 복제를 막는다면, 앞선 섹션의 절차에 따라 컬렉션을 복제에서 제거하고 근본 문제를 해결한 뒤 컬렉션을 다시 추가하세요.

더 알아보기 (Learn more)