You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无法为同一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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 10:45:55