3.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.1.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

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.