4.4. Kafka Connect 서비스 다시 시작


이제 Debezium MySQL 커넥터가 이벤트를 생성, 업데이트 및 삭제하는 방법을 보았으므로 실행 중이 아닌 경우에도 변경 이벤트를 캡처하는 방법을 확인할 수 있습니다.

Kafka Connect 서비스는 등록된 커넥터에 대한 작업을 자동으로 관리합니다. 따라서 오프라인 상태가 되면 재시작 시 실행 불가능한 작업이 모두 시작됩니다. 즉, Debezium이 실행되고 있지 않더라도 데이터베이스의 변경 사항을 보고할 수 있습니다.

이 절차에서는 Kafka Connect를 중지하고 데이터베이스에서 일부 데이터를 변경한 다음 Kafka Connect를 다시 시작하여 변경 이벤트를 확인합니다.

프로세스

  1. Kafka Connect 서비스를 중지합니다.

    1. Kafka Connect 배포의 구성을 엽니다.

      $ oc edit deployment/my-connect-cluster-connect

      배포 구성이 열립니다.

      apiVersion: apps.openshift.io/v1
      kind: Deployment
      metadata:
        ...
      spec:
        replicas: 1
      ...
    2. spec.replicas 값을 0 으로 변경합니다.
    3. 설정을 저장합니다.
    4. Kafka Connect 서비스가 중지되었는지 확인합니다.

      이 명령은 Kafka Connect 서비스가 완료되었으며 실행 중인 Pod가 없음을 보여줍니다.

      $ oc get pods -l strimzi.io/name=my-connect-cluster-connect
      NAME                                          READY   STATUS      RESTARTS   AGE
      my-connect-cluster-connect-1-dxcs9            0/1     Completed   0          7h
  2. Kafka Connect 서비스가 중단되는 동안 MySQL 클라이언트를 실행하는 터미널로 전환하고 새 레코드를 데이터베이스에 추가합니다.

    mysql> INSERT INTO customers VALUES (default, "Sarah", "Thompson", "kitt@acme.com");
  3. Kafka Connect 서비스를 다시 시작합니다.

    1. Kafka Connect 서비스의 배포 구성을 엽니다.

      $ oc edit deployment/my-connect-cluster-connect

      배포 구성이 열립니다.

      apiVersion: apps.openshift.io/v1
      kind: Deployment
      metadata:
        ...
      spec:
        replicas: 0
      ...
    2. spec.replicas 값을 1 로 변경합니다.
    3. 배포 구성을 저장합니다.
    4. Kafka Connect 서비스가 다시 시작되었는지 확인합니다.

      이 명령은 Kafka Connect 서비스가 실행 중이고 Pod가 준비되었음을 보여줍니다.

      $ oc get pods -l strimzi.io/name=my-connect-cluster-connect
      NAME                                          READY   STATUS      RESTARTS   AGE
      my-connect-cluster-connect-2-q9kkl            1/1     Running     0          74s
  4. kafka-console-consumer.sh 를 실행 중인 터미널로 전환합니다. 도착한 대로 새 이벤트가 열립니다.
  5. Kafka Connect가 오프라인 상태일 때 생성한 레코드를 검사합니다(읽기 쉽도록 포맷).

    {
      ...
      "payload":{
        "id":1005
      }
    }
    {
      ...
      "payload":{
        "before":null,
        "after":{
           "id":1005,
           "first_name":"Sarah",
           "last_name":"Thompson",
           "email":"kitt@acme.com"
        },
        "source":{
           "version":"2.3.4.Final",
           "connector":"mysql",
           "name":"dbserver1",
           "ts_ms":1582581502000,
           "snapshot":"false",
           "db":"inventory",
           "table":"customers",
           "server_id":223344,
           "gtid":null,
           "file":"mysql-bin.000004",
           "pos":364,
           "row":0,
           "thread":5,
           "query":null
        },
        "op":"c",
        "ts_ms":1582581502317
      }
    }
Red Hat logoGithubRedditYoutubeTwitter

자세한 정보

평가판, 구매 및 판매

커뮤니티

Red Hat 문서 정보

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

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

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

Red Hat 소개

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

© 2024 Red Hat, Inc.