无法为同一Oracle数据库创建第二个Debezium连接器超时问题
问题描述
- 环境:两个独立Azure Kubernetes集群(AKS,开发/测试),各对应独立Azure Event Hub命名空间,均连接同一Oracle数据库。开发环境捕获所有目标表,测试环境仅配置单连接器和一张小表。
- 现象:提交测试环境连接器配置时,返回超时错误:
{"error_code":500,"message":"Request timed out. The worker is currently performing multi-property validation for the connector, which began at 2025-08-28T15:35:05.893Z"}
- 排查情况:Pod日志无错误,可正常连接Event Hub和Oracle;开发环境运行正常;删除开发环境连接器后,测试环境仍无法创建新连接器;配置仅Event Hub凭据/名称不同,且凭据有效。
示例连接器配置
{ "name": "dev-connector", "config": { "connector.class": "io.debezium.connector.oracle.OracleConnector", "database.url": "jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=${file:/kafka/config/credentials.properties:DATABASE_HOSTNAME})(PORT=1527))(CONNECT_DATA=(SERVICE_NAME=${file:/kafka/config/credentials.properties:DATABASE_NAME})))" , "database.dbname": "someName", "database.pdb.name": "someName01", "database.user": "${file:/kafka/config/credentials.properties:DATABASE_USER}", "database.password": "${file:/kafka/config/credentials.properties:DATABASE_PASSWORD}", "topic.prefix": "test", "table.include.list": "TEST_PRODUCTION.customers", "query.timeout.ms": 60000, "topic.creation.default.partitions": "1", "topic.creation.default.replication.factor": "1", "database.connection.adapter": "logminer", "log.mining.strategy": "online_catalog", "log.mining.archive.log.only.mode": "false", "log.mining.buffer.drop.on.stop": "true", "log.mining.restart.connection": "true", "snapshot.mode": "no_data", "schema.history.internal.kafka.bootstrap.servers": "${file:/kafka/config/credentials.properties:BOOTSTRAP_SERVERS}", "schema.history.internal.kafka.topic": "test-schema-history", "schema.history.internal.consumer.security.protocol": "SASL_SSL", "schema.history.internal.consumer.sasl.mechanism": "PLAIN", "schema.history.internal.consumer.sasl.jaas.config": "org.apache.kafka.common.security.plain.PlainLoginModule required username='${file:/kafka/config/credentials.properties:SASL_USERNAME}' password='${file:/kafka/config/credentials.properties:SASL_PASSWORD}';", "schema.history.internal.producer.security.protocol": "SASL_SSL", "schema.history.internal.producer.sasl.mechanism": "PLAIN", "schema.history.internal.producer.sasl.jaas.config": "org.apache.kafka.common.security.plain.PlainLoginModule required username='${file:/kafka/config/credentials.properties:SASL_USERNAME}' password='${file:/kafka/config/credentials.properties:SASL_PASSWORD}';", "schema.history.internal.recovery.clean": "true", "schema.history.internal.recovery.attempts": "3", "schema.history.internal.store.only.captured.tables.ddl": true, "poll.interval.ms": "5000", "heartbeat.interval.ms": "5000", "transforms": "routeToSingleTopic", "transforms.routeToSingleTopic.type": "org.apache.kafka.connect.transforms.RegexRouter", "transforms.routeToSingleTopic.regex": "(?i).*TEST_PRODUCTION.*", "transforms.routeToSingleTopic.replacement": "test-all-tables" } }
相关Pod日志
[2025-08-28 15:34:29,489] INFO [Worker clientId=connect-100.112.2.62:8083, groupId=connect-cluster-group] Starting connectors and tasks using config offset 1016 (org.apache.kafka.connect.runtime.distributed.DistributedHerder:1921) [2025-08-28 15:34:29,489] INFO [Worker clientId=connect-100.112.2.62:8083, groupId=connect-cluster-group] Finished starting connectors and tasks (org.apache.kafka.connect.runtime.distributed.DistributedHerder:1950) [2025-08-28 15:34:50,726] INFO 10.231.35.103 - - [28/Aug/2025:15:34:50 +0000] "GET / HTTP/1.1" 200 122 "-" "kube-probe/1.30" 111 (org.apache.kafka.connect.runtime.rest.RestServer:62) [2025-08-28 15:34:53,483] INFO [Worker clientId=connect-100.112.2.62:8083, groupId=connect-cluster-group] Rebalance started (org.apache.kafka.connect.runtime.distributed.WorkerCoordinator:242) [2025-08-28 15:34:53,483] INFO [Worker clientId=connect-100.112.2.62:8083, groupId=connect-cluster-group] (Re-)joining group (org.apache.kafka.connect.runtime.distributed.WorkerCoordinator:604) [2025-08-28 15:34:53,488] INFO [Worker clientId=connect-100.112.2.62:8083, groupId=connect-cluster-group] Successfully joined group with generation Generation{generationId=54870228, memberId='ehn-nucleus-debezium-test-01.servicebus.windows.net:c:connect-cluster-group:I:connect-100.112.2.62:8083-02d5c67964df40b9b07125acd4e48031', protocol='sessioned'} (org.apache.kafka.connect.runtime.distributed.WorkerCoordinator:665) [2025-08-28 15:34:53,502] INFO [Worker clientId=connect-100.112.2.62:8083, groupId=connect-cluster-group] Successfully synced group in generation Generation{generationId=54870228, memberId='ehn-nucleus-debezium-test-01.servicebus.windows.net:c:connect-cluster-group:I:connect-100.112.2.62:8083-02d5c67964df40b9b07125acd4e48031', protocol='sessioned'} (org.apache.kafka.connect.runtime.distributed.WorkerCoordinator:842) [2025-08-28 15:34:53,502] INFO [Worker clientId=connect-100.112.2.62:8083, groupId=connect-cluster-group] Joined group at generation 54870228 with protocol version 2 and got assignment: Assignment{error=0, leader='ehn-nucleus-debezium-test-01.servicebus.windows.net:c:connect-cluster-group:I:connect-100.112.2.62:8083-02d5c67964df40b9b07125acd4e48031', leaderUrl='http://100.112.2.62:8083/', offset=1016, connectorIds=[], taskIds=[], revokedConnectorIds=[], revokedTaskIds=[], delay=0} with rebalance delay: 0 (org.apache.kafka.connect.runtime.distributed.DistributedHerder:2580) [2025-08-28 15:34:53,502] INFO [Worker clientId=connect-100.112.2.62:8083, groupId=connect-cluster-group] Starting connectors and tasks using config offset 1016 (org.apache.kafka.connect.runtime.distributed.DistributedHerder:1921) [2025-08-28 15:34:53,502] INFO [Worker clientId=connect-100.112.2.62:8083, groupId=connect-cluster-group] Finished starting connectors and tasks (org.apache.kafka.connect.runtime.distributed.DistributedHerder:1950) [2025-08-28 15:35:00,588] INFO 10.231.35.103 - - [28/Aug/2025:15:35:00 +0000] "GET / HTTP/1.1" 200 122 "-" "kube-probe/1.30" 4 (org.apache.kafka.connect.runtime.rest.RestServer:62) [2025-08-28 15:35:05,906] INFO Loading the custom source info struct maker plugin: io.debezium.connector.oracle.OracleSourceInfoStructMaker (io.debezium.config.CommonConnectorConfig:1684) [2025-08-28 15:35:10,586] INFO 10.231.35.103 - - [28/Aug/2025:15:35:10 +0000] "GET / HTTP/1.1" 200 122 "-" "kube-probe/1.30" 3 (org.apache.kafka.connect.runtime.rest.RestServer:62)
排查与解决方案
1. 调整Kafka Connect验证超时时间
修改Kafka Connect worker配置,延长验证阶段的超时限制:
- 添加
connector.config.validation.timeout.ms=120000(设置为2分钟) - 调整
request.timeout.ms=180000(设置为3分钟)
2. 清理Oracle残留会话
检查Oracle中是否存在未释放的LogMiner会话,导致测试连接器无法获取资源:
- 查询活跃LogMiner会话:
SELECT s.sid, s.serial#, s.username, s.status, m.session_id, m.mining_name FROM v$session s, v$logmnr_session m WHERE s.sid = m.session_id;
- 终止残留会话:
ALTER SYSTEM KILL SESSION '<sid>,<serial#>';
3. 隔离LogMiner会话配置
为测试连接器设置独立的LogMiner会话名称,避免与开发环境冲突:
- 在测试连接器配置中添加
log.mining.session.name=test-logminer-session
4. 启用Debezium调试日志
调整Connect Pod的日志配置,获取验证阶段的详细信息:
- 在log4j配置中添加:
log4j.logger.io.debezium.connector.oracle=DEBUG log4j.logger.io.debezium.config=DEBUG
- 重启Pod后查看日志,定位验证阻塞点
5. 验证Schema History Topic配置
确认测试环境的schema history topic完全独立且权限正常:
- 检查
schema.history.internal.kafka.topic在测试Event Hub命名空间中存在 - 适当调高
schema.history.internal.recovery.attempts参数值,增加重试次数
内容的提问来源于stack exchange,提问作者Filip Drzewiecki
相关产品推荐
相关产品推荐

