【问题标题】:Configure Debezium to connect to given mySQL instance配置 Debezium 以连接到给定的 mySQL 实例
【发布时间】:2020-09-13 15:41:00
【问题描述】:

假设我将获得多个 MySQL 实例并且必须流式传输实时数据。因此,为此,我使用以下列出的命令在 Docker Container 上启动了一些服务,这些命令将我连接到示例库存数据库,并且当我在 MySQL 命令行客户端中执行任何 DML 命令时,能够监控这些数据更改。

但是连接到实际 MySQL 数据库并在观察者窗口中流式传输相同的内容需要哪些更改或等效命令。

docker run -it --rm --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper:1.1

docker run -it --rm --name kafka -p 9092:9092 --link zookeeper:zookeeper debezium/kafka:1.1

docker run -it --rm --name mysql -p 3308:3308 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw debezium/example-mysql:1.1

docker run -it --rm --name mysqlterm --link mysql --rm mysql:5.7 sh -c "exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"debezium""

docker run -it --rm --name connect -p 8083:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my_connect_configs -e OFFSET_STORAGE_TOPIC=my_connect_offsets -e STATUS_STORAGE_TOPIC=my_connect_statuses --link zookeeper:zookeeper --link kafka:kafka --link mysql:mysql debezium/connect:1.1

curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d "{ \"name\": \"inventory-connector\", \"config\": { \"connector.class\": \"io.debezium.connector.mysql.MySqlConnector\", \"tasks.max\": \"1\", \"database.hostname\": \"mysql\", \"database.port\": \"3306\", \"database.user\": \"debezium\", \"database.password\": \"dbz\", \"database.server.id\": \"184054\", \"database.server.name\": \"dbserver1\", \"database.whitelist\": \"inventory\", \"database.history.kafka.bootstrap.servers\": \"kafka:9092\", \"database.history.kafka.topic\": \"dbhistory.inventory\" } }"

docker run -it --rm --name watcher --link zookeeper:zookeeper --link kafka:kafka debezium/kafka:1.1 watch-topic -a -k dbserver1.inventory.customers

假设 MySQL 连接细节如下:

Host address of MySQL : XXX.XXX.X.XXX
Databse/Schema : YYYYY
Username : ZZZZZ
Password : PPPPP
port : 3306

任何线索/解释将不胜感激!

【问题讨论】:

  • 这个问题与编程无关,因此在 SO 上是题外话。 SO 的 Dba 或 serverfault 姐妹版本在此类管理类型问题中提供帮助。

标签: apache-kafka apache-kafka-connect debezium


【解决方案1】:

当您使用此配置连接器时

curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" localhost:8083/connectors/ -d "{ \"name\": \"inventory-connector\", \"config\": { \"connector.class\": \"io.debezium.connector.mysql.MySqlConnector\", \"tasks.max\": \"1\", \"database.hostname\": \"mysql\", \"database.port\": \"3306\", \"database.user\": \"debezium\", \"database.password\": \"dbz\", \"database.server.id\": \"184054\", \"database.server.name\": \"dbserver1\", \"database.whitelist\": \"inventory\", \"database.history.kafka.bootstrap.servers\": \"kafka:9092\", \"database.history.kafka.topic\": \"dbhistory.inventory\" } }"

您修改它以包含您的实际源数据库的详细信息,例如

curl -i -X PUT -H  "Content-Type:application/json" \
    http://localhost:8083/connectors/source-mysql-01/config \
    -d '{
    "connector.class": "io.debezium.connector.mysql.MySqlConnector",
    "tasks.max": "1",
    "database.hostname": "XXX.XXX.X.XXX",
    "database.port": "3306",
    "database.user": "ZZZZZ",
    "database.password": "PPPPP",
    "database.server.id": "184054",
    "database.server.name": "dbserver1",
    "database.whitelist": "YYYYY",
    "database.history.kafka.bootstrap.servers": "kafka:9092",
    "database.history.kafka.topic": "dbhistory.YYYYY"
}'

请注意,我也已更改为 PUT 而不是 POST,因为这意味着您可以重新运行该命令来修改同名的现有连接器(如果不存在则创建它)。

【讨论】:

  • 1.其余命令是否会保持相同以监视本地 MySQL 数据库? 2. 需要从数据库端获取 CDC 的任何设置吗?因为我能够启动所有服务,但是当我执行任何插入/更新/删除 SQL 命令时,无法在观察程序窗口中看到响应。
  • PUT 说:HTTP/1.1 405 方法不允许日期:2021 年 4 月 28 日星期三 20:16:47 GMT 内容长度:58 服务器:Jetty(9.4.33.v20201020) {"error_code" :405,"message":"HTTP 405 方法不允许"}
  • @cloudsurfin 请发布一个包含完整详细信息的新问题
  • 我不需要用一个全新的来打扰你。我只是说,当我使用 PUT 而不是 POST 的确切代码时,我会从 Kafka 连接器(Debezium Mysql 1.5)返回 405。当我用 POST 替换它时,效果很好。仍在学习卡夫卡,但可能是相关的.....
  • 这就是 StackOverflow 的工作原理 - 新问题,发布新问题 :) 这样可以直接解决不同的问题,并且不会因为重叠的问题而混淆或混淆。
猜你喜欢
  • 2020-05-13
  • 2019-02-16
  • 2017-09-08
  • 1970-01-01
  • 1970-01-01
  • 2020-04-10
  • 2019-09-02
  • 2021-04-18
  • 1970-01-01
相关资源
最近更新 更多