Change Data Capture from MySQL to BigQuery using Debezium and Pub/Sub(스트림) 템플릿

Change Data Capture from MySQL to BigQuery using Debezium and Pub/Sub 템플릿은 Pub/Sub 메시지와 MySQL의 변경 데이터를 읽고 BigQuery에 레코드를 작성하는 스트리밍 파이프라인입니다. Debezium 커넥터는 MySQL 데이터베이스의 변경사항을 캡처하고 변경된 데이터를 Pub/Sub에 게시합니다. 그런 다음 템플릿이 Pub/Sub 메시지를 읽고 BigQuery에 씁니다.

이 템플릿을 사용하여 MySQL 데이터베이스와 BigQuery 테이블을 동기화할 수 있습니다. 파이프라인은 변경된 데이터를 BigQuery 스테이징 테이블에 쓰고 MySQL 데이터베이스를 복제하는 BigQuery 테이블을 간헐적으로 업데이트합니다.

파이프라인 요구사항

  • Debezium 커넥터가 배포되어야 합니다.
  • Pub/Sub 메시지는 빔 행으로 직렬화되어야 합니다.

템플릿 매개변수

매개변수 설명
inputSubscriptions 읽어올 Pub/Sub 입력 구독의 쉼표로 구분된 목록이며 <subscription>,<subscription>, ... 형식입니다.
changeLogDataset 스테이징 테이블을 저장할 BigQuery 데이터 세트이며 <my-dataset> 형식입니다.
replicaDataset 복제 테이블을 저장할 BigQuery 데이터 세트의 위치이며 <my-dataset> 형식입니다.
updateFrequencySecs 파이프라인이 MySQL 데이터베이스를 복제하는 BigQuery 테이블을 업데이트하는 간격입니다.

템플릿 실행

이 템플릿을 실행하려면 다음 단계를 따르세요.

  1. 로컬 머신에서 DataflowTemplates 저장소를 복제합니다.
  2. v2/cdc-parent 디렉터리로 변경합니다.
  3. Debezium 커넥터가 배포되어 있는지 확인합니다.
  4. Maven을 사용하여 Dataflow 템플릿을 실행합니다.
    mvn exec:java -pl cdc-change-applier -Dexec.args="--runner=DataflowRunner \
        --inputSubscriptions=SUBSCRIPTIONS \
        --updateFrequencySecs=300 \
        --changeLogDataset=CHANGELOG_DATASET \
        --replicaDataset=REPLICA_DATASET \
        --project=PROJECT_ID \
        --region=REGION_NAME"
      

    다음을 바꿉니다.

    • PROJECT_ID: Dataflow 작업을 실행할 Cloud 프로젝트 ID
    • SUBSCRIPTIONS: 쉼표로 구분된 Pub/Sub 구독 이름
    • CHANGELOG_DATASET: 변경 로그 데이터의 BigQuery 데이터 세트
    • REPLICA_DATASET: 복제본 테이블의 BigQuery 데이터 세트