创建Azure MySQL到Kafka的CDC连接器失败求助
问题分析与修复方案
核心错误点及修复步骤
1. MySQL数据库地址配置错误
连接器配置中database.hostname设为localhost,但Azure Database for MySQL是云端服务,无法通过localhost访问。需替换为Azure MySQL Flexible Server的完全限定域名(FQDN),可在Azure门户服务器概览页面获取(格式示例:your-server-name.mysql.database.azure.com)。
修改配置:
"database.hostname": "your-mysql-server-fqdn.mysql.database.azure.com"
2. MySQL表白名单格式错误
MySQL无dbo schema(该前缀为SQL Server用法),表白名单需使用数据库名.表名格式。将原配置的table.whitelist修改为:
"table.whitelist": "cdcdatabase.users"
3. 连接器参数名修正
Debezium MySQL连接器的数据库名称参数应为database.names而非database.dbname,建议调整:
"database.names": "cdcdatabase"
4. 网络访问权限配置
确保Azure MySQL Flexible Server的防火墙规则已添加Kafka Connect所在服务器的公网IP,允许3306端口入站流量;同时确认服务器的public network access设置为允许访问状态。
5. Azure MySQL CDC功能启用
需在Azure门户手动开启CDC:
- 进入MySQL服务器页面,左侧菜单选择「数据管理」→「变更数据捕获」
- 启用CDC功能,并指定目标数据库
cdcdatabase - 保存配置
6. 数据库用户权限补充
确保soleluna用户拥有CDC所需权限:
GRANT RELOAD, SHOW DATABASES, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'soleluna'@'%'; FLUSH PRIVILEGES;
修正后的连接器配置示例
{ "name": "mysql-cdc-connector", "config": { "connector.class": "io.debezium.connector.mysql.MySqlConnector", "database.hostname": "your-mysql-server-fqdn.mysql.database.azure.com", "database.port": "3306", "database.user": "soleluna", "database.names": "cdcdatabase", "database.password": "mypassword", "database.server.id": "1", "database.server.name": "userserver", "table.whitelist": "cdcdatabase.users", "database.history": "io.debezium.relational.history.MemoryDatabaseHistory", "topic.prefix": "cdc.kafkadev", "database.ssl.mode": "REQUIRED" } }
注意新增database.ssl.mode: REQUIRED,Azure MySQL强制要求SSL连接。
额外验证项
- 测试Kafka Connect服务器与Azure MySQL FQDN的连通性(如
telnet your-fqdn 3306) - 确认
connect-distributed.properties中Event Hub的SASL配置完整(SharedAccessKey未截断)
内容的提问来源于stack exchange,提问作者Dityudha
相关产品推荐
相关产品推荐

