데이터 캡처 핸들러 변경
개요
MongoDB Kafka 싱크 connector로 CDC(변경 데이터 캡처) 이벤트를 복제하는 방법을 알아보세요. CDC는 데이터 저장소의 변경 사항을 CDC 이벤트의 스트림으로 변환하는 소프트웨어 아키텍처입니다. CDC 이벤트는 데이터 저장소에서 수행된 변경 사항을 재현 가능한 방식으로 표현한 메시지입니다. 데이터 복제는 한 데이터 저장소의 CDC 이벤트에 포함된 변경 사항을 다른 데이터 저장소에 적용하여 두 데이터 저장소에서 모두 변경 사항이 발생하도록 하는 프로세스입니다.
CDC 핸들러를 사용하여 Apache Kafka 토픽에 저장된 CDC 이벤트를 MongoDB로 복제합니다. CDC 핸들러는 특정 CDC 이벤트 생성자의 CDC 이벤트를 MongoDB 쓰기 작업으로 변환하는 프로그램입니다.
CDC 이벤트 프로듀서는 CDC 이벤트를 생성하는 애플리케이션입니다. CDC 이벤트 생성자는 데이터 저장소 또는 데이터 저장소를 감시하고 데이터 저장소의 변경에 해당하는 CDC 이벤트를 생성하는 애플리케이션이 될 수 있습니다.
참고
MongoDB 변경 스트림은 CDC 아키텍처의 한 예입니다. 변경 스트림에 대해 자세히 알아보려면 변경 스트림에 대한 Kafka Connector 가이드를 참조하세요.
데이터 복제 방법을 설명하는 튜토리얼을 보려면 변경 데이터 캡처 핸들러를 사용한 데이터 복제 튜토리얼을 참조하세요.
CDC 핸들러 지정
다음 구성 옵션을 사용하여 싱크 커넥터에 CDC 핸들러를 지정할 수 있습니다.
change.data.capture.handler=<cdc handler class>
자세히 알아보려면 데이터 캡처 구성 옵션 변경을 참조하세요.
사용 가능한 CDC 핸들러
sink connector는 다음 CDC 이벤트 생산자에 대한 CDC 처리기를 제공합니다.
이전 이벤트 프로듀서에 대한 CDC 핸들러를 구성하는 방법을 알아보려면 다음 탭을 클릭하세요.
다음 속성 파일은 MongoDB 변경 이벤트 문서를 복제하도록 connector를 구성합니다.
connector.class=com.mongodb.kafka.connect.MongoSinkConnector connection.uri=<your connection uri> database=<your database> collection=<your collection> topics=<topic containing mongodb change event documents> change.data.capture.handler=com.mongodb.kafka.connect.sink.cdc.mongodb.ChangeStreamHandler
MongoDB CDC 핸들러의 소스 코드를 보려면 MongoDB Kafka connector 소스 코드를 참조하세요.
싱크 커넥터는 다음 데이터 저장소에서 발생하는 Debezium CDC 이벤트를 복제할 수 있습니다.
MongoDB
Postgres
MySQL
다음 탭을 클릭하면 앞의 각 데이터스토어에서 CDC 이벤트를 복제하도록 Debezium CDC 핸들러를 구성하는 방법을 확인할 수 있습니다.
다음 속성 파일은 MongoDB 인스턴스의 변경 사항에 해당하는 Debezium CDC 이벤트를 복제하도록 커넥터를 구성합니다.
connector.class=com.mongodb.kafka.connect.sink.MongoSinkConnector connection.uri=<your connection uri> database=<your mongodb database> collection=<your mongodb collection> topics=<topic containing debezium cdc events> change.data.capture.handler=com.mongodb.kafka.connect.sink.cdc.debezium.mongodb.ChangeStreamHandler
참고
2.0 이전 Debezium CDC 버전을 사용하는 경우 change.data.capture.handler
속성 값을 com.mongodb.kafka.connect.sink.cdc.debezium.mongodb.MongoDbHandler
로 설정하다 합니다.
Debezium CDC 핸들러의 소스 코드를 보려면 MongoDB Kafka Connector 소스 코드를 참조하세요.
다음 속성 파일은 Postgres 인스턴스의 변경 사항에 해당하는 Debezium CDC 이벤트를 복제하도록 커넥터를 구성합니다.
connector.class=com.mongodb.kafka.connect.sink.MongoSinkConnector connection.uri=<your connection uri> database=<your mongodb database> collection=<your mongodb collection> topics=<topic containing debezium cdc events> change.data.capture.handler=com.mongodb.kafka.connect.sink.cdc.debezium.rdbms.postgres.PostgresHandler
Debezium CDC 핸들러의 소스 코드를 보려면 MongoDB Kafka Connector 소스 코드를 참조하세요.
다음 속성 파일은 MySQL 인스턴스의 변경 사항에 해당하는 Debezium CDC 이벤트를 복제하도록 커넥터를 구성합니다.
connector.class=com.mongodb.kafka.connect.sink.MongoSinkConnector connection.uri=<your connection uri> database=<your mongodb database> collection=<your mongodb collection> topics=<topic containing debezium cdc events> change.data.capture.handler=com.mongodb.kafka.connect.sink.cdc.debezium.rdbms.mysql.MysqlHandler
Debezium CDC 핸들러의 소스 코드를 보려면 MongoDB Kafka Connector 소스 코드를 참조하세요.
참고
Debezium CDC 핸들러 사용자 지정
Debezium CDC 핸들러가 데이터스토어에서 CDC 이벤트를 복제할 수 없는 경우 DebeziumCDChandler 클래스를 확장하여 핸들러를 사용자 지정할 수 있습니다. 사용자 지정 CDC 핸들러에 대한 자세한 내용은 이 가이드의 자체 CDC 핸들러 만들기 섹션을 참조하세요.
싱크 커넥터는 다음 데이터 저장소에서 시작된 Qlik Replicate CDC 이벤트를 복제할 수 있습니다.
OracleDB
MySQL
Postgres
다음 속성 파일은 Qlik Replicate CDC 이벤트를 복제하도록 싱크 커넥터를 구성합니다.
connector.class=com.mongodb.kafka.connect.MongoSinkConnector connection.uri=<your connection uri> database=<your database> collection=<your collection> topics=<topic containing qlik replicate cdc events> change.data.capture.handler=com.mongodb.kafka.connect.sink.cdc.qlik.rdbms.RdbmsHandler
Qlik Replicate CDC 핸들러의 소스 코드를 보려면 MongoDB Kafka Connector 소스 코드를 참조하세요.
참고
Qlik Replicate CDC 핸들러 사용자 지정
Qlik Replicate CDC 핸들러가 데이터스토어에서 CDC 이벤트를 복제할 수 없는 경우 QlikCDChandler클래스를 확장하여 핸들러를 사용자 지정할 수 있습니다. 사용자 지정 CDC 핸들러에 대한 자세한 내용은 이 가이드의 자체 CDC 핸들러 만들기 섹션 을 참조하세요.
자체 CDC 핸들러 만들기
사용 사례에 맞는 사전 빌드된 CDC 핸들러가 없는 경우 직접 만들 수 있습니다. 사용자 지정 CDC 핸들러는 CdcHandler
인터페이스를 구현하는 Java 클래스입니다.
자세히 알아보려면 CdcHandler 인터페이스의 소스 코드를 참조하세요.
CDC 핸들러 구현의 예시를 보려면 사전 빌드된 CDC 핸들러의 소스 코드를 참조하세요.
CDC 핸들러 사용 방법
사용자 지정 CDC 핸들러를 사용하도록 싱크 커넥터(sink connector)를 구성하려면 다음 조치를 수행해야 합니다.
사용자 정의 CDC 핸들러 클래스를 JAR 파일로 컴파일합니다.
컴파일된 JAR을 Kafka 작업자의 클래스패스/플러그인 패스에 추가하세요. 플러그인 패스에 대한 자세한 내용은 Confluent 설명서를 참조하세요.
참고
Kafka Connect는 플러그인을 격리하여 로드합니다. 사용자 지정 쓰기 전략을 배포할 때 Connector JAR과 CDC 핸들러 JAR은 모두 동일한 경로에 있어야 합니다. 경로는 다음과 비슷해야 합니다.
<plugin.path>/mongo-kafka-connect/mongo-kafka-connect-all.jar
<plugin.path>/mongo-kafka-connect/custom-CDC-handler.jar
Kafka Connect 플러그인에 대해 자세히 알아보려면 Confluent에서 제공하는 이 가이드를 참조하세요.
구성 설정에서 사용자 지정 클래스를 지정합니다.
change.data.capture.handler
클래스를 JAR 파일로 컴파일하는 방법을 알아보려면 Oracle의 이 가이드를 참조하세요.