OpenShift에 Debezium 설치


Red Hat build of Debezium 2.3.4

OpenShift Container Platform에서 Red Hat 빌드 Debezium 2.3.4와 함께 사용

Red Hat build of Debezium Documentation Team

초록

이 가이드에서는 AMQ Streams를 사용하여 OpenShift Container Platform에 Red Hat build of Debezium을 설치하는 방법을 설명합니다.

머리말

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 용어를 교체하기 위해 최선을 다하고 있습니다. 먼저 마스터(master), 슬레이브(slave), 블랙리스트(blacklist), 화이트리스트(whitelist) 등 네 가지 용어를 교체하고 있습니다. 이러한 변경 작업은 작업 범위가 크므로 향후 여러 릴리스에 걸쳐 점차 구현할 예정입니다. 자세한 내용은 CTO Chris Wright의 메시지를 참조하십시오.

1장. Debezium 개요

Debezium for Red Hat Integration은 데이터베이스 작업을 캡처하고 행 수준 작업을 위한 데이터 변경 이벤트 레코드를 생성하며, 이벤트 레코드를 Apache Kafka 주제로 변경하는 분산 플랫폼입니다. Debezium은 Apache Kafka를 기반으로 구축되었으며 AMQ Streams와 함께 배포 및 통합됩니다.

Debezium은 데이터베이스 테이블에 대한 행 수준 변경 사항을 캡처하고 해당 변경 이벤트를 AMQ Streams에 전달합니다. 애플리케이션은 이러한 변경 이벤트 스트림을 읽고 해당 스트림이 발생한 순서대로 변경 이벤트에 액세스할 수 있습니다.

Debezium 은 Red Hat Integration을 위한 Debezium을 위한 업스트림 커뮤니티 프로젝트입니다.

Debezium은 다음을 포함하여 여러 가지 용도가 있습니다.

  • 데이터 복제
  • 캐시 및 검색 인덱스 업데이트
  • 모놀리식 애플리케이션 간소화
  • 데이터 통합
  • 스트리밍 쿼리 활성화

Debezium은 다음과 같은 일반적인 데이터베이스를 위한 Apache Kafka Connect 커넥터를 제공합니다.

2장. Debezium 커넥터 설치

커넥터 플러그인을 사용하여 Kafka Connect를 확장하여 AMQ Streams를 통해 Debezium 커넥터를 설치합니다. AMQ Streams 배포 후 Kafka Connect를 통해 Debezium을 커넥터 구성으로 배포할 수 있습니다.

2.1. Kafka 주제 생성 권장 사항

Debezium은 여러 Apache Kafka 항목에 데이터를 저장합니다. 주제는 관리자가 사전에 생성하거나 Kafka Connect를 구성하여 주제를 자동으로 구성할 수 있습니다.

다음 목록에서는 주제를 만들 때 고려해야 할 제한 사항 및 권장 사항에 대해 설명합니다.

Debezium Db2, MySQL, Oracle 및 SQL Server 커넥터에 대한 데이터베이스 스키마 기록 주제

이전 커넥터마다 데이터베이스 스키마 기록 항목이 필요합니다. 데이터베이스 스키마 기록 주제를 수동으로 생성하거나 Kafka 브로커를 사용하여 주제를 자동으로 생성하거나 Kafka Connect를 사용하여 주제를 생성하는 등 주제를 다음 설정으로 구성해야 합니다.

  • 무한 또는 매우 긴 보존.
  • 프로덕션 환경에서 3개 이상의 복제 요소입니다.
  • 단일 파티션.
기타 주제
  • 지정된 레코드에 대한 마지막 변경 이벤트만 저장되도록 Kafka 로그 압축 을 활성화하면 Apache Kafka에서 다음 주제 속성을 설정합니다.

    • min.compaction.lag.ms
    • delete.retention.ms

      소비자가 모든 이벤트를 수신하고 마커를 삭제할 수 있는 충분한 시간을 갖도록 하려면 싱크 커넥터에 예상되는 최대 다운타임보다 큰 이전 속성의 값을 지정합니다. 예를 들어 싱크 커넥터에 업데이트를 적용할 때 발생할 수 있는 다운타임을 고려하십시오.

  • 프로덕션에서 복제됩니다.
  • 단일 파티션.

    단일 파티션 규칙을 완화할 수 있지만 애플리케이션은 데이터베이스의 다른 행에 대해 순서가 없는 이벤트를 처리해야 합니다. 단일 행에 대한 이벤트는 완전히 정렬됩니다. 여러 파티션을 사용하는 경우 기본 동작은 Kafka가 키를 해시하여 파티션을 결정하는 것입니다. 다른 파티션 전략에서는 각 레코드에 대한 파티션 번호를 설정하려면 단일 메시지 변환(SMT)을 사용해야 합니다.

2.2. AMQ Streams에 Debezium 배포

Red Hat OpenShift Container Platform에서 Debezium 커넥터를 설정하려면 AMQ Streams를 사용하여 사용하려는 각 커넥터 플러그인에 대한 커넥터 플러그인이 포함된 Kafka Connect 컨테이너 이미지를 빌드합니다. 커넥터가 시작되면 구성된 데이터베이스에 연결하고 삽입, 업데이트 및 삭제된 행 또는 문서에 대해 변경 이벤트 레코드를 생성합니다.

Debezium 1.7부터 Debezium 커넥터를 배포하는 데 권장되는 방법은 AMQ Streams를 사용하여 커넥터 플러그인이 포함된 Kafka Connect 컨테이너 이미지를 빌드하는 것입니다.

배포 프로세스 중에 다음 사용자 정의 리소스(CR)를 생성하고 사용합니다.

  • Kafka Connect 인스턴스를 정의하는 KafkaConnect CR과 커넥터 아티팩트에 대한 정보를 이미지에 포함해야 합니다.
  • 커넥터가 소스 데이터베이스에 액세스하는 데 사용하는 정보를 포함하는 세부 정보를 제공하는 KafkaConnector CR입니다. AMQ Streams가 Kafka Connect Pod를 시작한 후 KafkaConnector CR을 적용하여 커넥터를 시작합니다.

Kafka Connect 이미지의 빌드 사양에서는 배포할 수 있는 커넥터를 지정할 수 있습니다. 각 커넥터 플러그인에 대해 배포에 사용할 다른 구성 요소를 지정할 수도 있습니다. 예를 들어 Apicurio 레지스트리 아티팩트 또는 Debezium 스크립팅 구성 요소를 추가할 수 있습니다. AMQ Streams는 Kafka Connect 이미지를 빌드할 때 지정된 아티팩트를 다운로드하여 이미지에 통합합니다.

KafkaConnect CR의 spec.build.output 매개변수는 생성된 Kafka Connect 컨테이너 이미지를 저장할 위치를 지정합니다. 컨테이너 이미지는 Docker 레지스트리 또는 OpenShift ImageStream에 저장할 수 있습니다. 이미지를 ImageStream에 저장하려면 Kafka Connect를 배포하기 전에 ImageStream을 생성해야 합니다. 이미지 스트림은 자동으로 생성되지 않습니다.

참고

KafkaConnect 리소스를 사용하여 클러스터를 생성하는 경우 나중에 Kafka Connect REST API를 사용하여 커넥터를 생성하거나 업데이트할 수 없습니다. REST API를 사용하여 정보를 검색할 수 있습니다.

추가 리소스

2.2.1. AMQ Streams를 사용하여 Debezium 배포

동일한 단계에 따라 각 유형의 Debezium 커넥터를 배포합니다. 다음 섹션에서는 Debezium MySQL 커넥터를 배포하는 방법을 설명합니다.

이전 버전의 AMQ Streams에서 OpenShift에 Debezium 커넥터를 배포하려면 먼저 커넥터의 Kafka Connect 이미지를 빌드해야 했습니다. 현재 OpenShift에 커넥터를 배포하는 방법은 AMQ Streams의 빌드 구성을 사용하여 사용하려는 Debezium 커넥터 플러그인이 포함된 Kafka Connect 컨테이너 이미지를 자동으로 빌드하는 것입니다.

빌드 프로세스 중에 AMQ Streams Operator는 Debezium 커넥터 정의를 비롯한 KafkaConnect 사용자 정의 리소스의 입력 매개변수를 Kafka Connect 컨테이너 이미지로 변환합니다. 빌드는 Red Hat Maven 리포지토리 또는 다른 구성된 HTTP 서버에서 필요한 아티팩트를 다운로드합니다.

새로 생성된 컨테이너는 .spec.build.output 에 지정된 컨테이너 레지스트리로 푸시되며 Kafka Connect 클러스터를 배포하는 데 사용됩니다. AMQ Streams는 Kafka Connect 이미지를 빌드한 후 KafkaConnector 사용자 정의 리소스를 생성하여 빌드에 포함된 커넥터를 시작합니다.

사전 요구 사항

  • 클러스터 Operator가 설치된 OpenShift 클러스터에 액세스할 수 있습니다.
  • AMQ Streams Operator가 실행 중입니다.
  • Apache Kafka 클러스터는 OpenShift에서 AMQ Streams 배포 및 관리에 설명된 대로 배포됩니다.
  • Kafka Connect는 AMQ Streams에 배포됨
  • Red Hat build of Debezium 라이센스가 있습니다.
  • OpenShift oc CLI 클라이언트가 설치되어 있거나 OpenShift Container Platform 웹 콘솔에 액세스할 수 있습니다.
  • Kafka Connect 빌드 이미지를 저장하려는 방법에 따라 레지스트리 권한이 필요하거나 ImageStream 리소스를 생성해야 합니다.

    Red Hat Quay.io 또는 Docker Hub와 같은 이미지 레지스트리에 빌드 이미지를 저장하려면 다음을 수행합니다.
    • 레지스트리에서 이미지를 생성하고 관리하는 계정 및 권한.
    빌드 이미지를 기본 OpenShift ImageStream으로 저장하려면 다음을 수행합니다.
    • ImageStream 리소스는 새 컨테이너 이미지를 저장하기 위해 클러스터에 배포됩니다. 클러스터에 대한 ImageStream을 명시적으로 생성해야 합니다. 이미지 스트림은 기본적으로 사용할 수 없습니다. ImageStreams에 대한 자세한 내용은 OpenShift Container Platform 설명서의 이미지 스트림 관리를 참조하십시오.

프로세스

  1. OpenShift 클러스터에 로그인합니다.
  2. 커넥터에 대한 Debezium KafkaConnect 사용자 정의 리소스(CR)를 생성하거나 기존 리소스를 수정합니다. 예를 들어 metadata.annotationsspec.build 속성을 지정하는 dbz-connect.yaml 이라는 이름으로 KafkaConnect CR을 생성합니다. 다음 예제에서는 KafkaConnect 사용자 정의 리소스를 설명하는 dbz-connect.yaml 파일에서 발췌한 내용을 보여줍니다.

    예 2.1. Debezium 커넥터를 포함하는 KafkaConnect 사용자 정의 리소스를 정의하는 dbz-connect.yaml 파일

    다음 예제에서는 사용자 정의 리소스가 다음 아티팩트를 다운로드하도록 구성되어 있습니다.

    • Debezium 커넥터 아카이브
    • Red Hat build of Apicurio 레지스트리 아카이브. Apicurio 레지스트리는 선택적 구성 요소입니다. 커넥터와 함께 Avro serialization을 사용하려는 경우에만 Apicurio 레지스트리 구성 요소를 추가합니다.
    • Debezium 스크립팅 SMT 아카이브 및 Debezium 커넥터와 함께 사용하려는 관련 스크립팅 엔진입니다. SMT 아카이브 및 스크립팅 언어 종속 항목은 선택적 구성 요소입니다. Debezium 콘텐츠 기반 라우팅 SMT를 사용하거나 SMT필터링 하려는 경우에만 이러한 구성 요소를 추가합니다.
    Copy to Clipboard Toggle word wrap
    apiVersion: kafka.strimzi.io/v1beta2
    kind: KafkaConnect
    metadata:
      name: debezium-kafka-connect-cluster
      annotations:
        strimzi.io/use-connector-resources: "true" 
    1
    
    spec:
      version: 3.5.0
      build: 
    2
    
        output: 
    3
    
          type: imagestream  
    4
    
          image: debezium-streams-connect:latest
        plugins: 
    5
    
          - name: debezium-connector-mysql
            artifacts:
              - type: zip 
    6
    
                url: https://maven.repository.redhat.com/ga/io/debezium/debezium-connector-mysql/2.3.4.Final-redhat-00001/debezium-connector-mysql-2.3.4.Final-redhat-00001-plugin.zip  
    7
    
              - type: zip
                url: https://maven.repository.redhat.com/ga/io/apicurio/apicurio-registry-distro-connect-converter/2.4.4.Final-redhat-<build-number>/apicurio-registry-distro-connect-converter-2.4.4.Final-redhat-<build-number>.zip  
    8
    
              - type: zip
                url: https://maven.repository.redhat.com/ga/io/debezium/debezium-scripting/2.3.4.Final-redhat-00001/debezium-scripting-2.3.4.Final-redhat-00001.zip 
    9
    
              - type: jar
                url: https://repo1.maven.org/maven2/org/codehaus/groovy/groovy/3.0.11/groovy-3.0.11.jar  
    10
    
              - type: jar
                url: https://repo1.maven.org/maven2/org/codehaus/groovy/groovy-jsr223/3.0.11/groovy-jsr223-3.0.11.jar
              - type: jar
                url: https://repo1.maven.org/maven2/org/codehaus/groovy/groovy-json3.0.11/groovy-json-3.0.11.jar
    
      bootstrapServers: debezium-kafka-cluster-kafka-bootstrap:9093
    
      ...
    표 2.1. Kafka Connect 구성 설정에 대한 설명
    항목설명

    1

    strimzi.io/use-connector-resources 주석을 "true" 로 설정하여 Cluster Operator에서 KafkaConnector 리소스를 사용하여 이 Kafka Connect 클러스터에서 커넥터를 구성할 수 있습니다.

    2

    spec.build 구성은 빌드 이미지를 저장할 위치를 지정하고 플러그인 아티팩트 위치와 함께 이미지에 포함할 플러그인을 나열합니다.

    3

    build.output 은 새로 빌드된 이미지가 저장되는 레지스트리를 지정합니다.

    4

    이미지 출력의 이름과 이미지 이름을 지정합니다. output.type 에 유효한 값은 Docker Hub 또는 Quay와 같은 컨테이너 레지스트리로 푸시하는 docker 또는 이미지 스트림으로 이미지를 내부 OpenShift ImageStream으로 내보내는 이미지 스트림입니다. ImageStream을 사용하려면 ImageStream 리소스를 클러스터에 배포해야 합니다. KafkaConnect 구성에서 build.output 을 지정하는 방법에 대한 자세한 내용은 OpenShift에서 AMQ Streams 구성의 AMQ Streams 빌드 스키마 참조를 참조하십시오.

    5

    플러그인 구성에는 Kafka Connect 이미지에 포함할 모든 커넥터가 나열됩니다. 목록의 각 항목에 대해 플러그인 이름을 지정하고 커넥터를 빌드하는 데 필요한 아티팩트에 대한 정보를 지정합니다. 선택적으로 각 커넥터 플러그인에 대해 커넥터와 함께 사용할 수 있는 다른 구성 요소를 포함할 수 있습니다. 예를 들어 서비스 레지스트리 아티팩트 또는 Debezium 스크립팅 구성 요소를 추가할 수 있습니다.

    6

    artifacts.type 값은 artifacts.url 에 지정된 아티팩트의 파일 유형을 지정합니다. 유효한 유형은 zip,tgz 또는 Cryostat 입니다. Debezium 커넥터 아카이브는 .zip 파일 형식으로 제공됩니다. type 값은 url 필드에서 참조되는 파일의 유형과 일치해야 합니다.

    7

    artifacts.url 값은 커넥터 아티팩트에 대한 파일을 저장하는 Maven 리포지토리와 같은 HTTP 서버의 주소를 지정합니다. Debezium 커넥터 아티팩트는 Red Hat Maven 리포지토리에서 사용할 수 있습니다. OpenShift 클러스터는 지정된 서버에 액세스할 수 있어야 합니다.

    8

    (선택 사항) Apicurio 레지스트리 구성 요소를 다운로드하기 위한 아티팩트 유형URL 을 지정합니다. 커넥터가 Apache Avro를 사용하여 기본 JSON 변환기를 사용하는 대신 Apicurio Registry의 Red Hat 빌드로 이벤트 키와 값을 직렬화하려는 경우에만 Apicurio 레지스트리 아티팩트를 포함합니다.

    9

    (선택 사항) Debezium 스크립팅 SMT 아카이브와 함께 Debezium 커넥터와 함께 사용할 아티팩트 유형URL 을 지정합니다. Debezium 콘텐츠 기반 라우팅 SMT를 사용하거나 SMT필터링하려는 경우에만 스크립팅 SMT 를 포함하려면 groovy와 같은 Cryostat 223 호환 스크립팅 구현도 배포해야 합니다.

    10

    (선택 사항) Debezium 스크립팅 SMT에 필요한 223 호환 스크립팅 구현의 JAR 파일에 대한 아티팩트 유형URL 을 지정합니다.

    중요

    AMQ Streams를 사용하여 커넥터 플러그인을 Kafka Connect 이미지에 통합하는 경우 필요한 각 스크립팅 언어 구성 요소 artifacts.url 에서 JAR 파일의 위치를 지정해야 하며 artifacts.type 값도 Cryostat로 설정되어야 합니다. 잘못된 값으로 인해 런타임 시 커넥터가 실패합니다.

    스크립팅과 함께 Apache Groovy 언어를 사용하려면 예제의 사용자 정의 리소스는 다음 라이브러리의 JAR 파일을 검색합니다.

    • Groovy
    • groovy-jsr223 (스크립트 에이전트)
    • groovy-json (JSON 문자열 구문 분석용 모듈)

    또는 Debezium 스크립팅 SMT는 GraalVM JavaScript의 223 구현도 지원합니다.

  3. 다음 명령을 입력하여 KafkaConnect 빌드 사양을 OpenShift 클러스터에 적용합니다.

    Copy to Clipboard Toggle word wrap
    oc create -f dbz-connect.yaml

    사용자 정의 리소스에 지정된 구성에 따라 Streams Operator는 Kafka Connect 이미지를 배포하여 준비합니다.
    빌드가 완료되면 Operator에서 이미지를 지정된 레지스트리 또는 ImageStream으로 푸시하고 Kafka Connect 클러스터를 시작합니다. 구성에 나열된 커넥터 아티팩트는 클러스터에서 사용할 수 있습니다.

  4. KafkaConnector 리소스를 생성하여 배포하려는 각 커넥터의 인스턴스를 정의합니다.
    예를 들어 다음 KafkaConnector CR을 생성하고 mysql-inventory-connector.yaml로 저장합니다.

    예 2.2. Debezium 커넥터에 대한 KafkaConnector 사용자 정의 리소스를 정의하는 MySQL-inventory-connector.yaml 파일

    Copy to Clipboard Toggle word wrap
        apiVersion: kafka.strimzi.io/v1beta2
        kind: KafkaConnector
        metadata:
          labels:
            strimzi.io/cluster: debezium-kafka-connect-cluster
          name: inventory-connector-mysql 
    1
    
        spec:
          class: io.debezium.connector.mysql.MySqlConnector 
    2
    
          tasksMax: 1  
    3
    
          config:  
    4
    
            schema.history.internal.kafka.bootstrap.servers: debezium-kafka-cluster-kafka-bootstrap.debezium.svc.cluster.local:9092
            schema.history.internal.kafka.topic: schema-changes.inventory
            database.hostname: mysql.debezium-mysql.svc.cluster.local 
    5
    
            database.port: 3306   
    6
    
            database.user: debezium  
    7
    
            database.password: dbz  
    8
    
            database.server.id: 184054 
    9
    
            topic.prefix: inventory-connector-mysql 
    10
    
            table.include.list: inventory.*  
    11
    
    
            ...
    표 2.2. 커넥터 구성 설정에 대한 설명
    항목설명

    1

    Kafka Connect 클러스터에 등록할 커넥터의 이름입니다.

    2

    커넥터 클래스의 이름입니다.

    3

    동시에 작동할 수 있는 작업 수입니다.

    4

    커넥터의 구성입니다.

    5

    호스트 데이터베이스 인스턴스의 주소입니다.

    6

    데이터베이스 인스턴스의 포트 번호입니다.

    7

    Debezium이 데이터베이스에 연결하는 데 사용하는 계정의 이름입니다.

    8

    Debezium이 데이터베이스 사용자 계정에 연결하는 데 사용하는 암호입니다.

    9

    커넥터의 고유 숫자 ID입니다.

    10

    데이터베이스 인스턴스 또는 클러스터의 주제 접두사입니다.
    지정된 이름은 영숫자 또는 밑줄에서만 구성되어야 합니다.
    주제 접두사는 이 커넥터에서 변경 이벤트를 수신하는 Kafka 주제의 접두사로 사용되므로 클러스터의 커넥터 간에 이름은 고유해야 합니다.
    이 네임스페이스는 커넥터를 Avro 커넥터와 통합하는 경우 관련 Kafka Connect 스키마의 이름 및 해당 Avro 스키마의 네임스페이스에도 사용됩니다. https://access.redhat.com/documentation/en-us/red_hat_build_of_debezium/2.3.4/html-single/debezium_user_guide/index#avro-serialization

    11

    커넥터가 변경 이벤트를 캡처하는 테이블 목록입니다.

  5. 다음 명령을 실행하여 커넥터 리소스를 생성합니다.

    Copy to Clipboard Toggle word wrap
    oc create -n <namespace> -f <kafkaConnector>.yaml

    예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    oc create -n debezium -f mysql-inventory-connector.yaml

    커넥터는 Kafka Connect 클러스터에 등록되어 있으며 KafkaConnector CR의 spec.config.database.dbname 에 지정된 데이터베이스에 대해 실행하기 시작합니다. 커넥터 Pod가 준비되면 Debezium이 실행됩니다.

이제 Debezium 배포를 확인할 준비가 되었습니다.

2.2.2. Debezium 커넥터가 실행 중인지 확인

커넥터가 오류 없이 올바르게 시작되면 커넥터가 캡처하도록 구성된 각 테이블에 대한 항목이 생성됩니다. 다운스트림 애플리케이션은 이러한 주제를 구독하여 소스 데이터베이스에서 발생하는 정보 이벤트를 검색할 수 있습니다.

커넥터가 실행 중인지 확인하려면 OpenShift Container Platform 웹 콘솔 또는 OpenShift CLI 툴(oc)에서 다음 작업을 수행합니다.

  • 커넥터 상태를 확인합니다.
  • 커넥터가 주제를 생성하는지 확인합니다.
  • 각 테이블의 초기 스냅샷 중에 커넥터가 생성하는 읽기 작업("op":"r")에 대한 이벤트로 항목이 입력되었는지 확인합니다.

사전 요구 사항

  • Debezium 커넥터는 OpenShift의 AMQ Streams에 배포됩니다.
  • OpenShift oc CLI 클라이언트가 설치되어 있어야 합니다.
  • OpenShift Container Platform 웹 콘솔에 액세스할 수 있습니다.

프로세스

  1. 다음 방법 중 하나를 사용하여 KafkaConnector 리소스의 상태를 확인합니다.

    • OpenShift Container Platform 웹 콘솔에서 다음을 수행합니다.

      1. 홈 → 검색으로 이동합니다.
      2. 검색 페이지에서 리소스를 클릭하여 리소스 선택 상자를 연 다음 KafkaConnector 를 입력합니다.
      3. KafkaConnectors 목록에서 확인할 커넥터의 이름을 클릭합니다(예: inventory-connector-mysql ).
      4. Conditions 섹션의 TypeStatus 열의 값이 ReadyTrue 로 설정되어 있는지 확인합니다.
    • 터미널 창에서 다음을 수행합니다.

      1. 다음 명령을 실행합니다.

        Copy to Clipboard Toggle word wrap
        oc describe KafkaConnector <connector-name> -n <project>

        예를 들면 다음과 같습니다.

        Copy to Clipboard Toggle word wrap
        oc describe KafkaConnector inventory-connector-mysql -n debezium

        이 명령은 다음 출력과 유사한 상태 정보를 반환합니다.

        예 2.3. KafkaConnector 리소스 상태

        Copy to Clipboard Toggle word wrap
        Name:         inventory-connector-mysql
        Namespace:    debezium
        Labels:       strimzi.io/cluster=debezium-kafka-connect-cluster
        Annotations:  <none>
        API Version:  kafka.strimzi.io/v1beta2
        Kind:         KafkaConnector
        
        ...
        
        Status:
          Conditions:
            Last Transition Time:  2021-12-08T17:41:34.897153Z
            Status:                True
            Type:                  Ready
          Connector Status:
            Connector:
              State:      RUNNING
              worker_id:  10.131.1.124:8083
            Name:         inventory-connector-mysql
            Tasks:
              Id:               0
              State:            RUNNING
              worker_id:        10.131.1.124:8083
            Type:               source
          Observed Generation:  1
          Tasks Max:            1
          Topics:
            inventory-connector-mysql.inventory
            inventory-connector-mysql.inventory.addresses
            inventory-connector-mysql.inventory.customers
            inventory-connector-mysql.inventory.geom
            inventory-connector-mysql.inventory.orders
            inventory-connector-mysql.inventory.products
            inventory-connector-mysql.inventory.products_on_hand
        Events:  <none>
  2. 커넥터가 Kafka 주제를 생성했는지 확인합니다.

    • OpenShift Container Platform 웹 콘솔에서 다음을 수행합니다.

      1. 홈 → 검색으로 이동합니다.
      2. 검색 페이지에서 리소스를 클릭하여 리소스 선택 상자를 연 다음 KafkaTopic 을 입력합니다.
      3. KafkaTopics 목록에서 확인할 주제의 이름을 클릭합니다(예: inventory -connector-mysql.inventory.orders--ac5e98ac6a5d91e04d8ec0dc9078a1ece439081d ).
      4. Conditions 섹션의 TypeStatus 열의 값이 ReadyTrue 로 설정되어 있는지 확인합니다.
    • 터미널 창에서 다음을 수행합니다.

      1. 다음 명령을 실행합니다.

        Copy to Clipboard Toggle word wrap
        oc get kafkatopics

        이 명령은 다음 출력과 유사한 상태 정보를 반환합니다.

        예 2.4. KafkaTopic 리소스 상태

        Copy to Clipboard Toggle word wrap
        NAME                                                                    CLUSTER               PARTITIONS   REPLICATION FACTOR   READY
        connect-cluster-configs                                                 debezium-kafka-cluster   1            1                    True
        connect-cluster-offsets                                                 debezium-kafka-cluster   25           1                    True
        connect-cluster-status                                                  debezium-kafka-cluster   5            1                    True
        consumer-offsets---84e7a678d08f4bd226872e5cdd4eb527fadc1c6a             debezium-kafka-cluster   50           1                    True
        inventory-connector-mysql--a96f69b23d6118ff415f772679da623fbbb99421                               debezium-kafka-cluster   1            1                    True
        inventory-connector-mysql.inventory.addresses---1b6beaf7b2eb57d177d92be90ca2b210c9a56480          debezium-kafka-cluster   1            1                    True
        inventory-connector-mysql.inventory.customers---9931e04ec92ecc0924f4406af3fdace7545c483b          debezium-kafka-cluster   1            1                    True
        inventory-connector-mysql.inventory.geom---9f7e136091f071bf49ca59bf99e86c713ee58dd5               debezium-kafka-cluster   1            1                    True
        inventory-connector-mysql.inventory.orders---ac5e98ac6a5d91e04d8ec0dc9078a1ece439081d             debezium-kafka-cluster   1            1                    True
        inventory-connector-mysql.inventory.products---df0746db116844cee2297fab611c21b56f82dcef           debezium-kafka-cluster   1            1                    True
        inventory-connector-mysql.inventory.products_on_hand---8649e0f17ffcc9212e266e31a7aeea4585e5c6b5   debezium-kafka-cluster   1            1                    True
        schema-changes.inventory                                                debezium-kafka-cluster   1            1                    True
        strimzi-store-topic---effb8e3e057afce1ecf67c3f5d8e4e3ff177fc55          debezium-kafka-cluster   1            1                    True
        strimzi-topic-operator-kstreams-topic-store-changelog---b75e702040b99be8a9263134de3507fc0cc4017b  debezium-kafka-cluster  1   1    True
  3. 주제 콘텐츠를 확인합니다.

    • 터미널 창에서 다음 명령을 입력합니다.
    Copy to Clipboard Toggle word wrap
    oc exec -n <project>  -it <kafka-cluster> -- /opt/kafka/bin/kafka-console-consumer.sh \
    >     --bootstrap-server localhost:9092 \
    >     --from-beginning \
    >     --property print.key=true \
    >     --topic=<topic-name>

    예를 들면 다음과 같습니다.

    Copy to Clipboard Toggle word wrap
    oc exec -n debezium  -it debezium-kafka-cluster-kafka-0 -- /opt/kafka/bin/kafka-console-consumer.sh \
    >     --bootstrap-server localhost:9092 \
    >     --from-beginning \
    >     --property print.key=true \
    >     --topic=inventory-connector-mysql.inventory.products_on_hand

    주제 이름을 지정하는 형식은 oc describe 명령과 동일합니다. 예를 들어 inventory-connector-mysql.inventory.addresses.

    주제의 각 이벤트에 대해 명령은 다음 출력과 유사한 정보를 반환합니다.

    예 2.5. Debezium 변경 이벤트의 내용

    Copy to Clipboard Toggle word wrap
    {"schema":{"type":"struct","fields":[{"type":"int32","optional":false,"field":"product_id"}],"optional":false,"name":"inventory-connector-mysql.inventory.products_on_hand.Key"},"payload":{"product_id":101}} {"schema":{"type":"struct","fields":[{"type":"struct","fields":[{"type":"int32","optional":false,"field":"product_id"},{"type":"int32","optional":false,"field":"quantity"}],"optional":true,"name":"inventory-connector-mysql.inventory.products_on_hand.Value","field":"before"},{"type":"struct","fields":[{"type":"int32","optional":false,"field":"product_id"},{"type":"int32","optional":false,"field":"quantity"}],"optional":true,"name":"inventory-connector-mysql.inventory.products_on_hand.Value","field":"after"},{"type":"struct","fields":[{"type":"string","optional":false,"field":"version"},{"type":"string","optional":false,"field":"connector"},{"type":"string","optional":false,"field":"name"},{"type":"int64","optional":false,"field":"ts_ms"},{"type":"string","optional":true,"name":"io.debezium.data.Enum","version":1,"parameters":{"allowed":"true,last,false"},"default":"false","field":"snapshot"},{"type":"string","optional":false,"field":"db"},{"type":"string","optional":true,"field":"sequence"},{"type":"string","optional":true,"field":"table"},{"type":"int64","optional":false,"field":"server_id"},{"type":"string","optional":true,"field":"gtid"},{"type":"string","optional":false,"field":"file"},{"type":"int64","optional":false,"field":"pos"},{"type":"int32","optional":false,"field":"row"},{"type":"int64","optional":true,"field":"thread"},{"type":"string","optional":true,"field":"query"}],"optional":false,"name":"io.debezium.connector.mysql.Source","field":"source"},{"type":"string","optional":false,"field":"op"},{"type":"int64","optional":true,"field":"ts_ms"},{"type":"struct","fields":[{"type":"string","optional":false,"field":"id"},{"type":"int64","optional":false,"field":"total_order"},{"type":"int64","optional":false,"field":"data_collection_order"}],"optional":true,"field":"transaction"}],"optional":false,"name":"inventory-connector-mysql.inventory.products_on_hand.Envelope"},"payload":{"before":null,"after":{"product_id":101,"quantity":3},"source":{"version":"2.3.4.Final-redhat-00001","connector":"mysql","name":"inventory-connector-mysql","ts_ms":1638985247805,"snapshot":"true","db":"inventory","sequence":null,"table":"products_on_hand","server_id":0,"gtid":null,"file":"mysql-bin.000003","pos":156,"row":0,"thread":null,"query":null},"op":"r","ts_ms":1638985247805,"transaction":null}}

    이전 예에서 페이로드 값은 테이블 inventory.products_on_hand 에서 커넥터 스냅샷이 읽기("op" ="r") 이벤트를 생성했음을 보여줍니다. product_id 레코드의 "이전" 상태는 null 이며 레코드에 대해 이전 값이 없음을 나타냅니다. "after" 상태는 product_id 101 가 있는 항목에 대해 3수량을 보여줍니다.

여러 Kafka Connect 서비스 클러스터 및 여러 Kafka 클러스터를 사용하여 Debezium을 실행할 수 있습니다. Kafka Connect 클러스터에 배포할 수 있는 커넥터 수는 데이터베이스 이벤트의 볼륨 및 비율에 따라 달라집니다.

다음 단계

특정 커넥터 배포에 대한 자세한 내용은 Debezium 사용자 가이드의 다음 항목을 참조하십시오.

부록 A. 서브스크립션 사용

Debezium은 소프트웨어 서브스크립션을 통해 제공됩니다. 서브스크립션을 관리하려면 Red Hat 고객 포털에서 계정에 액세스하십시오.

계정 액세스

  1. access.redhat.com 으로 이동합니다.
  2. 계정이 없는 경우 계정을 생성합니다.
  3. 계정에 로그인합니다.

서브스크립션 활성화

  1. access.redhat.com 으로 이동합니다.
  2. 내 서브스크립션 으로 이동합니다.
  3. 서브스크립션 활성화로 이동하여 16자리 활성화 번호를 입력합니다.

zip 및 tar 파일 다운로드

zip 또는 tar 파일에 액세스하려면 고객 포털을 사용하여 다운로드할 관련 파일을 찾습니다. RPM 패키지를 사용하는 경우 이 단계는 필요하지 않습니다.

  1. 브라우저를 열고 Red Hat Customer Portal 제품 다운로드 페이지에 access.redhat.com/downloads.
  2. 아래로 스크롤하여 INTEGRATION and AUTOMATION.
  3. Red Hat Integration 을 클릭하여 Red Hat Integration 다운로드 페이지를 표시합니다.
  4. 구성 요소에 대한 다운로드 링크를 클릭합니다.

2023-11-04에 최종 업데이트된 문서

법적 공지

Copyright © 2023 Red Hat, Inc.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation's permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.
맨 위로 이동
Red Hat logoGithubredditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

Red Hat을 사용하는 고객은 신뢰할 수 있는 콘텐츠가 포함된 제품과 서비스를 통해 혁신하고 목표를 달성할 수 있습니다. 최신 업데이트를 확인하세요.

보다 포괄적 수용을 위한 오픈 소스 용어 교체

Red Hat은 코드, 문서, 웹 속성에서 문제가 있는 언어를 교체하기 위해 최선을 다하고 있습니다. 자세한 내용은 다음을 참조하세요.Red Hat 블로그.

Red Hat 소개

Red Hat은 기업이 핵심 데이터 센터에서 네트워크 에지에 이르기까지 플랫폼과 환경 전반에서 더 쉽게 작업할 수 있도록 강화된 솔루션을 제공합니다.

Theme

© 2025 Red Hat, Inc.