CaptureChangeMySQL

CaptureChangeMySQL

MySQL 데이터베이스에서 CDC(Change Data Capture) 이벤트를 읽는 프로세서예요. 바이너리 로그(binlog) 파일에서 이벤트를 계속 읽으며, TableStateService가 제공하는 테이블과 관련된 것만 골라내고 나머지는 버려요.

출처: Snowflake 문서 — CaptureChangeMySQL

본문

번들 (Bundle)

com.snowflake.openflow.runtime | runtime-database-cdc-processors-nar

설명

MySQL 데이터베이스에서 CDC 이벤트를 읽어요. 프로세서는 바이너리 로그 파일에서 이벤트를 계속 읽으면서, TableStateService가 제공하는 테이블과 관련된 이벤트만 걸러 내고 나머지는 폐기해요. 프로세서는 두 가지 유형의 FlowFile을 출력해요:

  • DDL — 테이블의 스키마를 담고 있어요(초기 스키마와 스키마가 변경될 때마다의 새 스키마).
  • DML — 테이블 데이터의 변경 사항을 나타내는 레코드예요.

하나의 FlowFile은 항상 단일 테이블과 관련된 데이터를 나타내요. 스키마가 담긴 DDL은 FlowFile 내용에 JSON 객체로 기록돼요:

{
  "columns": [
    { "name": "<columnName>", "type": "<snowflakeType>", "nullable": <true|false>, "scale": <scale>, "precision": <precision> },
    ...
  ],
  "primaryKeys": ["<primaryKey1>", "<primaryKey2>", ...]
}

DML 레코드가 담긴 FlowFile의 구조는 다음과 같아요:

{
  "primaryKeys": { "<column>": <value>, ... },
  "payload": { "<column>": <value>, ... },
  "metadata": { "<column>": <value>, ... }
}

태그

cdc, event, jdbc, mysql, sql

입력 요구 사항 (Input Requirement)

FORBIDDEN — 입력 FlowFile이 허용되지 않아요.

민감한 동적 속성 지원 (Supports Sensitive Dynamic Properties)

false — 지원하지 않아요.

속성 (Properties)

속성 설명
Column Filter Store 테이블별 컬럼 필터링 설정을 저장하는 서비스예요.
Connection Timeout 소스 데이터베이스 연결 제한 시간이에요.
JDBC Driver Location 드라이버 JAR와 그 의존성(있다면)을 담은 파일/폴더 및/또는 URL의 쉼표로 구분된 목록이에요. 예: /var/tmp/mariadb-java-client-3.4.1.jar
JDBC URL 데이터베이스 연결의 JDBC URL이에요. 예: jdbc:mariadb://localhost:3306/mysql
Max Batch Size 단일 반복에서 처리할 최대 레코드 수예요. 마지막 binlog 이벤트가 한 행 이상을 담을 때 레코드 수가 최대 배치 크기를 초과할 수 있어요.
Max Batch Wait Time binlog에 데이터가 나타날 때까지 기다리는 최대 시간이에요.
Max Queue Size 리더 스레드가 onTrigger를 기다리기 전까지 binlog에서 읽는 최대 요소 수예요.
Password MySQL 데이터베이스에 접근하는 비밀번호예요.
Record Writer DML 이벤트 직렬화에 사용되는 Record Writer예요.
SSL Context Service 암호화된 소켓 통신을 지원하는 SSL Context Service예요.
SSL Mode SSL Context Service가 인증서 검증 옵션을 지원하도록 구성됐을 때 사용되는 SSL 모드예요.
Server ID 서버 ID(1부터 2^32-1 범위)예요. 이 값은 전체 복제 그룹에서 고유해야 해요(즉, 다른 마스터나 슬레이브가 쓰는 Server ID와 달라야 해요). 각 바이너리 로그 클라이언트를 단순화된 슬레이브로 취급해야 하므로 역시 다른 Server ID를 사용해야 해요.
Server ID Strategy 서버 ID가 어떻게 선택되는지 결정해요.
Table State Store 복제된 테이블의 상태를 보관하는 공유 저장소예요.
Username MySQL 데이터베이스에 접근하는 사용자 이름이에요.

상태 관리 (State management)

범위 (Scope) 설명
CLUSTER 이 프로세서는 데이터베이스의 현재 CDC 이벤트에 대한 '포인터' 같은 정보를 저장해서, 재시작해도 같은 위치에서 계속할 수 있어요.

관계 (Relationships)

이름 설명
success CDC 스트림 이벤트에서 FlowFile을 성공적으로 만들었어요.

기록하는 속성 (Writes attributes)

이름 설명
source.schema.name 이벤트가 발생한 테이블의 스키마 이름이에요.
source.table.name 이벤트가 발생한 테이블의 이름이에요.
cdc.event.type FlowFile이 나르는 이벤트 유형, ddl 또는 dml이에요.
cdc.most.significant.position CDC 스트림에서 DDL의 가장 큰 위치 값이에요.
cdc.least.significant.position CDC 스트림에서 DDL의 가장 작은 위치 값이에요.
cdc.event.seen.at 프로세서가 ddl 이벤트를 읽은 시점의 타임스탬프예요.

더 알아보기 (Learn more)