Debezium独立非Docker环境下MySQL表数据同步问题求助
Debezium跨MySQL表同步问题:目标表未创建
问题场景
在非Docker环境下测试Debezium,实现将testiot.INPUT_TEMP的变更数据同步到tiotbak.INPUT_TEMP_BK,目前源表已被连接器读取,但目标表始终未自动创建。
源连接器配置(source.properties)
name=connect-mysql connector.class=io.debezium.connector.mysql.MySqlConnector tasks.max=1 database.hostname=localhost database.port=3306 database.user=debezium database.password=dbz database.dbname=testiot database.server.id=184054 topic.prefix=testiot database.server.name=localhost database.allowPublicKeyRetrieval=true schema.history.internal.kafka.bootstrap.servers=localhost:9092 schema.history.internal.kafka.topic=testiot.INPUT_TEMP_BK database.history.kafka.bootstrap.servers=localhost:9092 database.history.kafka.topic=testiot.INPUT_TEMP_BK
Sink连接器配置(sink.properties)
name=connect-mysql connector.class=io.confluent.connect.jdbc.JdbcSinkConnector tasks.max=1 connection.url=jdbc:mysql://localhost:3306/tiotbak?user=debezium&password=dbz&allowPublicKeyRetrieval=true&useSSL=false topic.prefix=testiot database.hostname=localhost database.port=3306 database.user=debezium database.password=Debez@01 database.dbname=tiotbak database.server.id=184054 database.server.name=localhost auto.create=true insert.mode=upsert pk.fields=DEVICE_ID pk.mode=record_value record_value=record_value
执行命令
sudo ./bin/connect-standalone.sh ./config/connect-debezium-mysql-worker.properties ./config/connect-debezium-mysql-source.properties ./config/connect-debezium-mysql-sink.properties
排查与解决建议
- 清理Sink冗余配置:JdbcSinkConnector不需要
database.hostname、database.port、database.server.id、database.server.name这些Debezium源连接器专属参数,直接删除,避免干扰Sink逻辑。 - 统一数据库密码:当前
connection.url中的密码为dbz,但单独配置的database.password为Debez@01,两者不一致会导致目标库连接权限验证失败,需统一为正确密码。 - 修正Topic匹配规则:Debezium源连接器生成的Topic格式为
{topic.prefix}.{database}.{table},即testiot.testiot.INPUT_TEMP,需在Sink配置中明确指定监听的Topic,比如添加topics=testiot.testiot.INPUT_TEMP,替代无效的topic.prefix配置。 - 验证Kafka消息流转:使用
kafka-console-consumer.sh消费testiot.testiot.INPUT_TEMPTopic,确认是否有变更消息生成;若没有,需先排查MySQL Binlog配置(确保开启Binlog、格式为ROW、server-id唯一)。 - 确认目标库权限:确保
debezium用户对tiotbak库拥有CREATE TABLE、INSERT、UPDATE等权限,可执行GRANT ALL ON tiotbak.* TO 'debezium'@'%'; FLUSH PRIVILEGES;刷新权限。 - 删除无效参数:Sink配置中的
record_value=record_value为无效参数,直接删除。
内容的提问来源于stack exchange,提问作者Krishna
相关产品推荐
相关产品推荐

