在解决方案的相应场景中,MySQL CDC Source Connector 会通过实时读取 MySQL Binlog 进行数据同步。本文将详细介绍如何配置 MySQL CDC Connector 的各项高级参数,来帮助您优化任务性能并规避常见问题。
通用建议
- 优先保持默认:大多数参数是“故障排查 / 特殊场景兼容”才需要改。
- 一次只改一个参数:CDC 场景联动多,建议每次改动都在小流量环境验证。
- 出现数据中断/回退风险的参数(如
initial_offset_type、auto_offset_reset、job.reader.debezium.*)优先在低峰期操作。
一、连接与鉴权
job.reader.connections
1. 参数概述
- 参数名:
job.reader.connections - 适用范围: MySQL CDC Source(connector-cdc-mysql-v3)
- 单位/类型:
List<ClusterInfo> - 默认值: 默认值请以当前产品配置为准(通常由平台根据数据源自动生成;为空会失败)
- 核心作用: 定义 MySQL 连接地址。当前实现通常只使用第一个 cluster 的
master 作为连接目标。
连接结构示例(来自原始参数文档截图):
2. 适用场景
- 必配场景:任何 MySQL CDC 任务都必须有可用连接信息。
- 需要手动干预的场景:平台自动生成的连接信息不符合预期(例如需要连到指定 VIP / 代理层)。
3. 调参建议 / 推荐配置
- 默认推荐:使用平台自动生成的值。
- 排障临时配置:可将
master.host/port 指向可直连且权限正确的实例,快速排除“网络/权限/代理”问题。
4. 参数联动
- 与
job.reader.user_name / job.reader.password 强绑定。 - 若你通过
master.url(或 db_url)提供 JDBC URL,可能还会与连接参数(如 useSSL、serverTimezone)有关;但多数场景建议走平台默认。
5. FAQ(用户提问)
- 问:我配了多个 cluster/slave,会轮询吗?
- 答:大多数 CDC 场景只取第一个 cluster 的 master 作为连接入口。是否支持多地址容灾以产品行为为准。
6. 注意事项
- CDC 用户需具备必要的权限(常见包括 replication 相关权限、读取库表权限)。
- 如果
connections 为空或结构不合法,任务会在启动时直接失败。
7. 总结说明
job.reader.connections 用于告诉 CDC 作业“连到哪台 MySQL”。通常不需要你手工填写,保持平台自动生成即可;只有在连接目标需要特殊指定或排障时才建议修改。
job.reader.user_name
1. 参数概述
- 参数名:
job.reader.user_name - 适用范围: MySQL CDC Source
- 单位/类型: 字符串
- 默认值: 无(必填)
- 核心作用: MySQL 登录用户名。
2. 适用场景
- 必配:所有任务都需要。
- 排障:遇到连接失败、权限不足、无法读取 binlog 时,优先检查用户名对应权限。
3. 调参建议 / 推荐配置
- 建议使用专用的 CDC 账号(最小权限原则),并与业务账号隔离。
4. 参数联动
- 与
job.reader.password、job.reader.connections 强绑定。
5. FAQ(用户提问)
- 问:为什么连接成功但读不到 binlog?
- 答:通常是 replication / binlog 相关权限不足,建议检查账号授权。
6. 注意事项
- 账号权限过小会导致“能连上但拉不到增量”的隐蔽问题。
7. 总结说明
job.reader.user_name 是 MySQL CDC 的登录用户,必须配置且需要具备 CDC 所需权限。
job.reader.password
1. 参数概述
- 参数名:
job.reader.password - 适用范围: MySQL CDC Source
- 单位/类型: 字符串
- 默认值: 无(必填)
- 核心作用: MySQL 登录密码。
2. 适用场景
3. 调参建议 / 推荐配置
4. 参数联动
- 与
job.reader.user_name、job.reader.connections 强绑定。
5. FAQ(用户提问)
- 问:我不想在配置里放明文怎么办?
- 答:优先使用平台提供的密文托管/凭证引用方式;如果只能写入配置,也应限制可见范围。
6. 注意事项
7. 总结说明
job.reader.password 是登录凭证的一部分,建议通过平台的安全方式配置,避免明文泄漏。
job.reader.db_name
1. 参数概述
- 参数名:
job.reader.db_name - 适用范围: MySQL CDC Source
- 单位/类型: 字符串
- 默认值: 默认值请以当前产品配置为准
- 核心作用: 指定数据库名(用于限定范围/构造 Debezium 连接配置)。
2. 适用场景
3. 调参建议 / 推荐配置
- 如果你已经通过
database_include_list / table_include_list 做了过滤,通常无需额外配置。
4. 参数联动
- 与
job.reader.database_include_list / job.reader.table_include_list 同时存在时,以实际过滤行为为准(建议以 include_list 为主)。
5. FAQ(用户提问)
- 问:我只配了 db_name,为什么还是抓到了别的库?
- 答:库表过滤建议使用
database_include_list/table_include_list,db_name 更多是连接/标识层参数。
6. 注意事项
7. 总结说明
job.reader.db_name 用于指定数据库范围/标识,但库表过滤建议优先使用 include_list 系列参数。
job.reader.table_name
1. 参数概述
- 参数名:
job.reader.table_name - 适用范围: MySQL CDC Source
- 单位/类型: 字符串
- 默认值: 默认值请以当前产品配置为准(通常来自用户选择的表映射)
- 核心作用: 常用于 Catalog 构造或平台侧表映射信息;并不是 CDC 捕获过滤的唯一入口。
2. 适用场景
3. 调参建议 / 推荐配置
- CDC 捕获过滤建议以
table_include_list 为主;table_name 一般不需要手动调。
4. 参数联动
- 与
job.reader.table_include_list 联动:include_list 才是更直接的捕获过滤入口。
5. FAQ(用户提问)
- 问:我改了 table_name,为什么实际抓取表没变?
- 答:实际捕获过滤通常由
table_include_list / Debezium filter 决定。
6. 注意事项
7. 总结说明.reader.table_name 更多用于平台侧表映射/构造信息;真正控制 CDC 抓取范围,建议用 table_include_list。
job.reader.identifier
1. 参数概述
- 参数名:
job.reader.identifier - 适用范围: MySQL CDC Source
- 单位/类型: 字符串
- 默认值: 默认值请以当前产品配置为准(平台在分库分表/多实例场景可能自动生成)
- 核心作用: 用于区分多个 source 实例,常被用于生成 server_name、history 标识,以及输出元数据字段(如
_$id$_)的内容。
2. 适用场景
- 多实例/多任务并行采集同一 MySQL,希望避免逻辑名称冲突。
- 需要在下游区分来源(多路复用)时。
3. 调参建议 / 推荐配置
- 默认推荐由平台生成。
- 手动配置时建议保持“短、稳定、可读”,例如
bizA_order_cdc_01。
4. 参数联动
- 影响
job.reader.server_name / job.reader.server_id 的默认生成逻辑。 - 与
_src_meta_info_ / _$id$_ 等元数据字段展示相关。
5. FAQ(用户提问)
- 问:为什么两个任务互相影响、像是读到同一个 server?
- 答:可能是 server_name/server_id 冲突。建议检查是否需要设置
identifier(或显式配置 server_name/server_id)。
6. 注意事项
- 频繁修改 identifier 可能导致“看起来像新任务”,影响恢复与排障定位。
7. 总结说明
job.reader.identifier 主要用于区分不同 CDC 实例,减少 server 名称/元数据冲突,多实例场景建议保持唯一且稳定。
job.reader.server_name
1. 参数概述
- 参数名:
job.reader.server_name - 适用范围: MySQL CDC Source
- 单位/类型: 字符串
- 默认值: 默认值请以当前产品配置为准(通常用 job_id 或结合 identifier 自动生成)
- 核心作用: 覆盖 Debezium 的 logical name(常用于内部标识、history 等)。
2. 适用场景
- 多任务并行、需要避免 logical name 冲突时。
3. 调参建议 / 推荐配置
- 若平台已自动生成,通常无需手动配置。
- 手动配置建议与
identifier 保持一致策略(唯一、稳定)。
4. 参数联动
- 与
job.reader.server_id 强联动:通常一起看,避免一改一不改引入冲突。
5. FAQ(用户提问)
- 问:server_name 配错会怎样?
- 答:可能导致两个任务共享/冲突内部标识,带来不可预期的恢复和数据问题。
6. 注意事项
7. 总结说明
job.reader.server_name 用于指定 CDC 任务的逻辑名称,多实例场景可用于避免冲突,建议保持唯一且稳定。
job.reader.server_id
1. 参数概述
- 参数名:
job.reader.server_id - 适用范围: MySQL CDC Source
- 单位/类型: 整数
- 默认值: 默认值请以当前产品配置为准(通常自动生成)
- 核心作用: MySQL replication 的 server-id。用于与 MySQL 建立复制/读取 binlog 的身份标识。
2. 适用场景
- 多个 CDC 任务同时订阅同一 MySQL,需要确保 server-id 不冲突。
3. 调参建议 / 推荐配置
- 默认推荐使用平台自动生成的 server-id。
- 若需手工指定,务必保证在同一 MySQL 实例维度全局唯一。
4. 参数联动
- 与
job.reader.server_name、job.reader.identifier 联动。
5. FAQ(用户提问)
- 问:为什么报“server id 冲突/重复连接”?
- 答:通常是多个任务使用了相同 server-id。建议显式配置或保证平台生成策略不冲突。
6. 注意事项
- server-id 冲突可能导致 CDC 不稳定甚至中断。
7. 总结说明
job.reader.server_id 是 CDC 以 replication 身份读取 binlog 的关键参数,多任务场景必须确保唯一。
二、DDL / Schema 相关
job.reader.include_schema_changes
1. 参数概述
- 参数名:
job.reader.include_schema_changes - 适用范围: MySQL CDC Source
- 单位/类型: Boolean
- 默认值: 引擎默认
false;部分 Streaming 模板可能会默认开启(请以当前产品配置为准) - 核心作用: 是否输出 schema change event(DDL)。开启后,下游需要具备处理 DDL 事件的能力。
2. 适用场景
- 需要同步表结构演进:下游需要感知新增字段/改字段等变更,并做自动建表/自动加列。
- 排障定位:希望验证上游是否存在频繁 DDL、以及 DDL 是否被正确捕获。
3. 调参建议 / 推荐配置
- 默认推荐:下游不支持 DDL 时保持关闭。
- Schema 演进/自动建表:开启,并同时确认下游链路对 DDL 的处理策略。
- 排障临时:短期开启观察 DDL,再恢复默认。
4. 参数联动
- 与
job.reader.debezium 中 Debezium 的 schema/ddl 相关参数联动(例如 schema handling、history、converter 等)。
5. FAQ(用户提问)
- 问:开了之后下游为什么报“schema mismatch / column not found”?
- 答:通常是下游还没来得及应用 DDL,或不支持 DDL 事件。此参数只能“发出 DDL”,不负责“落地 DDL”。
6. 注意事项
- 开启会增加下游处理复杂度;如果你的 sink/下游不需要 schema 演进,建议关闭。
7. 总结说明
job.reader.include_schema_changes 控制是否把 MySQL 的 DDL 也作为事件输出。只有当下游具备 schema 演进处理能力时才建议开启。
三、启动位点 / Offset 相关
job.reader.initial_offset_type
1. 参数概述
- 参数名:
job.reader.initial_offset_type - 适用范围: MySQL CDC Source
- 单位/类型: 字符串
- 默认值:
latest - 核心作用: 指定 首次启动或没有可恢复状态时,从哪个 binlog 位点开始。
常见取值(以产品支持为准):
earliest:从最早可访问位点开始latest:从最新位点开始(更“实时”,但会跳过历史增量)timestamp:从指定时间点附近开始(依赖 initial_offset_timestamp)specified:从用户指定的 offset 开始(依赖 initial_offset_props)
2. 适用场景
- 追求实时、无需历史增量:选择
latest。 - 补历史/追溯:选择
earliest 或 timestamp / specified。 - 迁移/切换任务:希望严格从某个已知位点接续时,使用
specified。
3. 调参建议 / 推荐配置
- 默认推荐:
latest。 - 补数/回溯:优先
timestamp(更易操作);需要精确接续再用 specified。 - 排障临时:如怀疑位点问题,可用
timestamp 从稍早时间点重启验证。
4. 参数联动
timestamp 必须配 job.reader.initial_offset_timestamp。specified 必须配 job.reader.initial_offset_props。- 与
job.reader.auto_offset_reset 有“兜底”关系:当恢复位点不可用时,是否允许自动跳转。
5. FAQ(用户提问)
- 问:我把 initial_offset_type 改成 earliest,会不会重复消费?
- 答:如果任务没有可恢复状态(新任务/状态丢失),会从更早位点读,可能造成重复。生产环境变更需谨慎。
6. 注意事项
- 这类“起始位点”参数常带来 重放/丢数 风险,建议只在明确了解影响时调整。
7. 总结说明
job.reader.initial_offset_type 决定首次启动从哪读 binlog。默认 latest 偏实时;需要追溯时再选择 earliest/timestamp/specified。
job.reader.initial_offset_timestamp
1. 参数概述
- 参数名:
job.reader.initial_offset_timestamp - 适用范围: MySQL CDC Source
- 单位/类型: Long(毫秒时间戳)
- 默认值: 无(仅在
initial_offset_type=timestamp 时需要) - 核心作用: 以“时间点”表达启动位点。
2. 适用场景
- 需要从某个时间附近开始追溯(例如“从昨天 00:00 开始补”)。
3. 调参建议 / 推荐配置
- 建议把时间点取在“目标时间稍早一些”,留出 MySQL binlog 的时间-位点对齐误差空间。
4. 参数联动
- 仅在
job.reader.initial_offset_type=timestamp 生效。
5. FAQ(用户提问)
- 问:为什么我指定时间点还是有偏差?
- 答:binlog 位点和时间是近似映射,可能存在一定偏移,建议适当回拨。
6. 注意事项
- 必须保证 MySQL 的 binlog 保留时长覆盖你指定的时间点,否则会失败或触发兜底策略。
7. 总结说明
job.reader.initial_offset_timestamp 让你用时间来表达起始位点,适合补数追溯,但需确保 binlog 保留覆盖该时间段。
job.reader.initial_offset_props
1. 参数概述
- 参数名:
job.reader.initial_offset_props - 适用范围: MySQL CDC Source
- 单位/类型:
Map<String,String> - 默认值: 无(仅在
initial_offset_type=specified 时需要) - 核心作用: 用更精确的方式指定启动位点(例如 binlog 文件名/pos/gtid 等,具体字段以产品实现为准)。
2. 适用场景
- 迁移/容灾切换,希望从“明确的已知位点”接续,避免时间映射误差。
3. 调参建议 / 推荐配置
- 仅建议在你能拿到可靠位点信息(例如从上一次任务状态/平台位点页面)时使用。
4. 参数联动
- 仅在
job.reader.initial_offset_type=specified 生效。
5. FAQ(用户提问)
- 问:props 里到底要写哪些字段?
- 答:不同实现可能不同,建议以平台提供的位点导出/示例为准;不要猜字段名。
6. 注意事项
7. 总结说明
job.reader.initial_offset_props 适用于“精确位点接续”的场景,建议只在有可靠位点来源时使用。
job.reader.auto_offset_reset
1. 参数概述
- 参数名:
job.reader.auto_offset_reset - 适用范围: MySQL CDC Source
- 单位/类型: 字符串(枚举)
- 默认值:
DEFAULT - 核心作用: 当任务恢复出来的 binlog 位点 已不可访问(例如 binlog 已被清理)时的兜底策略。
常见取值:
DEFAULT:直接失败(更安全)EARLIEST:从最早可访问位点继续LATEST:从最新位点继续
2. 适用场景
- 经常遇到 binlog 过期(保留时长短 + 任务偶发停止)的场景。
3. 调参建议 / 推荐配置
- 默认推荐:
DEFAULT,避免静默丢数/重放。 - 吞吐/稳定优先,允许一定数据不一致:可考虑
LATEST(可能跳过一段数据)。 - 希望尽量不丢数据,能接受重复:可考虑
EARLIEST(可能重放一段数据)。
4. 参数联动
- 与 MySQL binlog 保留策略强相关(binlog 保留越短,越容易触发)。
- 与下游幂等/去重能力强相关。
5. FAQ(用户提问)
- 问:我选了 LATEST,为什么感觉少了一段数据?
- 答:这是预期风险:LATEST 会跳到最新位点,可能跳过不可访问段。
6. 注意事项
说明
这是一个“能让任务继续跑,但可能引入数据不一致”的参数。除非你明确接受“可能丢数或重复”,否则建议保持 DEFAULT。
7. 总结说明
job.reader.auto_offset_reset 决定了“位点丢了怎么办”。默认直接失败更安全;改成 EARLIEST/LATEST 可能换来继续运行,但要承担重复或丢数风险。
四、Debezium 透传与 Rescale/恢复相关
job.reader.debezium
1. 参数概述
- 参数名:
job.reader.debezium - 适用范围: MySQL CDC Source
- 单位/类型:
Map<String,String> - 默认值: 无
- 核心作用: 透传 Debezium 配置(key/value),并覆盖 connector 默认值。
示例(仅示意,具体键请以 Debezium 官方文档与产品支持为准):
{
"job": {
"reader": {
"debezium": {
"heartbeat.interval.ms": "300000",
"tombstones.on.delete": "false"
}
}
}
}
2. 适用场景
- 需要开启/调整 Debezium 的高级能力:heartbeat、snapshot、converter、schema/history、SSL 等。
- 排障时希望临时调整 Debezium 行为(例如降低 heartbeat 间隔)。
3. 调参建议 / 推荐配置
- 默认推荐:不配置或仅配置少量“确定必要”的键。
- 排障临时:短期开启/调整某些 Debezium 参数,验证后回收。
4. 参数联动
- 会覆盖 connector 默认值(例如时区、SSL、tombstone、schema handling 等)。
- 与
job.reader.include_schema_changes、在线 DDL 工具开关(ghost/pt-osc)等存在间接联动。
5. FAQ(用户提问)
- 问:我配了 debezium 之后任务行为变了,为什么?
- 答:
job.reader.debezium 的覆盖优先级很高,可能把 connector 的默认值覆盖掉了。建议只改你确定需要的键,并记录改动。
6. 注意事项
说明
job.reader.debezium 是“高级开口”。生产环境不建议一次性塞入大量 Debezium 键值;如果必须改,建议先在低流量环境验证。
7. 总结说明
job.reader.debezium 允许你直接控制 Debezium 的细节能力,但同时也会覆盖 connector 默认值。建议谨慎、小步、可回滚地使用。
job.reader.debezium.mysql_rescale_strategy
1. 参数概述
- 参数名:
job.reader.debezium.mysql_rescale_strategy - 适用范围: MySQL CDC Source
- 单位/类型: 字符串(枚举)
- 默认值:
DELAY_FAILOVER - 核心作用: 当 rescale/通信失败等场景发生时,选择立即 failover 还是“等成功 checkpoint 后再 failover”,以提升一致性。
2. 适用场景
- 作业经常发生 rescale(扩缩容)或遇到短暂网络抖动,且对一致性更敏感。
3. 调参建议 / 推荐配置
- 默认推荐:保持
DELAY_FAILOVER。 - 更快恢复优先:可评估切到
DEFAULT(立即 failover),但需接受一致性风险。
4. 参数联动
- 与
job.reader.checkpoint_num_delay 强联动。 - 与
job.common.checkpoint_enable(是否开启 checkpoint)间接相关:若不启 checkpoint,“等 checkpoint 再 failover”的收益会打折。
5. FAQ(用户提问)
- 问:为什么我感觉 failover 变慢了?
- 答:DELAY_FAILOVER 会等待成功 checkpoint 再抛错触发 failover,这是用恢复速度换一致性。
6. 注意事项
- 建议结合业务对“少量重复/少量丢失”的容忍度选择。
7. 总结说明
mysql_rescale_strategy 主要决定 rescale/通信失败时的 failover 时机。默认延迟到 checkpoint 后更稳;立即 failover 更快但风险更高。
job.reader.checkpoint_num_delay
1. 参数概述
- 参数名:
job.reader.checkpoint_num_delay - 适用范围: MySQL CDC Source
- 单位/类型: 整数
- 默认值:
1 - 核心作用: 在
mysql_rescale_strategy=DELAY_FAILOVER 下,允许在最近一次成功 checkpoint 之后,最多容忍多少次 aborted checkpoint 才抛异常。
2. 适用场景
- checkpoint 偶发失败,但不希望立刻触发 failover。
3. 调参建议 / 推荐配置
- 默认推荐:
1。 - checkpoint 波动较大:可适当调大(例如 3~5)以减少抖动导致的频繁 failover。
4. 参数联动
- 与
job.reader.debezium.mysql_rescale_strategy 强联动。 - 与 Flink checkpoint 稳定性(IO、反压、状态大小)间接相关。
5. FAQ(用户提问)
- 问:调大是不是就更稳定?
- 答:调大只会“更能忍”,可能延后发现真实故障。建议先定位 checkpoint 失败原因。
6. 注意事项
7. 总结说明
checkpoint_num_delay 是 DELAY_FAILOVER 的“容忍度”参数,适合用来抗短暂 checkpoint 抖动,但不应替代对失败根因的治理。
job.reader.fix_binlog_split_state
1. 参数概述
- 参数名:
job.reader.fix_binlog_split_state - 适用范围: MySQL CDC Source
- 单位/类型: Boolean
- 默认值:
true - 核心作用: 从 checkpoint 恢复时,自动清理 binlog split state 中“已被 exclude 的表/已删除表”的 schema,降低恢复失败概率。
2. 适用场景
- 任务恢复时出现 schema 相关报错(例如恢复失败、表已被排除/删除导致不一致)。
3. 调参建议 / 推荐配置
- 默认推荐:保持
true。 - 排障:如果你怀疑该修复逻辑引入副作用,可临时置为
false 对比验证。
4. 参数联动
- 与 include/exclude 规则(
table_include_list、在线 DDL 工具开关)间接相关。
5. FAQ(用户提问)
- 问:为什么恢复时突然找不到某些表的 schema?
- 答:如果这些表已被排除或确实不存在,开启该参数会主动清理相关状态以保证恢复成功。
6. 注意事项
- 这是偏“兼容/恢复成功率”的参数,通常不建议关闭。
7. 总结说明
fix_binlog_split_state 用来提高从 checkpoint 恢复的成功率,默认开启即可,只有排查副作用时才建议临时关闭。
五、Debezium 拉取队列(吞吐/延迟/内存)
job.reader.poll_interval_ms
1. 参数概述
- 参数名:
job.reader.poll_interval_ms - 适用范围: MySQL CDC Source
- 单位/类型: Long(毫秒)
- 默认值:
500 - 核心作用: 当 Debezium 队列为空时,poll 的休眠间隔。主要影响 CPU 使用率 与 空闲时延迟。
2. 适用场景
- 低流量场景希望降低 CPU 占用。
- 对“无数据时的尾部延迟”敏感(希望更快感知新数据)。
3. 调参建议 / 推荐配置
- 默认推荐:保持默认。
- 实时性优先:适当调小(例如 100~200),可能提升 CPU 占用。
- 资源占用优先:适当调大(例如 1000~2000),可能增加空闲时的触发延迟。
4. 参数联动
- 与
max_batch_size / max_queue_size 一起影响整体吞吐与内存。
5. FAQ(用户提问)
- 问:调小是不是一定更实时?
- 答:低流量下会更快轮询到新数据,但也会更耗 CPU;高流量下队列不空时影响不大。
6. 注意事项
- 不建议在高流量任务上盲目调小,先观察 CPU/反压。
7. 总结说明
poll_interval_ms 用于平衡“空闲时延迟”和“CPU 占用”,大多数场景保持默认即可。
job.reader.max_batch_size
1. 参数概述
- 参数名:
job.reader.max_batch_size - 适用范围: MySQL CDC Source
- 单位/类型: 整数
- 默认值:
2048 - 核心作用: 单次从 Debezium 队列 poll 的最大 batch。
2. 适用场景
- 吞吐不足:希望提高单次处理批量。
- 单次处理抖动/延迟高:希望降低单次 batch 带来的处理时延。
3. 调参建议 / 推荐配置
- 吞吐优先:可适当调大(例如 4096~8192),可能增加单次处理时延。
- 实时性优先:可适当调小(例如 512~1024),可能降低吞吐。
4. 参数联动
- 与
max_queue_size 联动:batch 变大但 queue 过小,收益有限。
5. FAQ(用户提问)
- 问:我调大后为什么反而延迟变高?
- 答:batch 越大,单次处理越“重”,可能造成更明显的批处理延迟。
6. 注意事项
- 建议结合下游 sink 的写入批量与反压表现综合评估。
7. 总结说明
max_batch_size 用来在吞吐与单次处理时延之间做权衡:调大更偏吞吐,调小更偏实时。
job.reader.max_queue_size
1. 参数概述
- 参数名:
job.reader.max_queue_size - 适用范围: MySQL CDC Source
- 单位/类型: 整数
- 默认值:
8192 - 核心作用: Debezium 队列容量。影响 可缓冲事件量 和 内存占用。
2. 适用场景
- 下游偶发抖动、希望队列能吸收短时反压。
- 高吞吐场景希望扩大缓冲以减少上游阻塞。
3. 调参建议 / 推荐配置
- 吞吐/抗抖动优先:适当调大(例如 16384~65536),注意内存。
- 内存敏感:保持默认或调小,但可能更容易触发反压。
4. 参数联动
- 与
max_batch_size、Flink 反压状态联动。
5. FAQ(用户提问)
- 问:队列越大是不是越好?
- 答:不是。队列越大内存越高,且可能增加数据在队列中的驻留时间。
6. 注意事项
- 调大前建议评估 TaskManager/JVM 内存余量。
7. 总结说明
max_queue_size 是 CDC 事件的缓冲容量:调大更能抗抖动但更耗内存;默认值通常足够。
六、库表过滤(抓取范围)
job.reader.database_include_list
1. 参数概述
- 参数名:
job.reader.database_include_list - 适用范围: MySQL CDC Source
- 单位/类型:
List<String> - 默认值: 默认值请以当前产品配置为准(平台常根据选表自动生成)
- 核心作用: 限定需要捕获的数据库集合(支持正则)。
2. 适用场景
3. 调参建议 / 推荐配置
- 推荐使用平台自动生成。
- 手动配置时,建议先从“精确库名”开始,再逐步引入正则。
4. 参数联动
- 与
table_include_list 联动:更精确的表过滤通常用 table_include_list。
5. FAQ(用户提问)
- 问:我配了 database_include_list,为什么还是抓不到表?
- 答:可能是
table_include_list 更严格或未覆盖该表;建议同时检查表过滤。
6. 注意事项
7. 总结说明
database_include_list 用于限定库范围,多库场景很常用;更细粒度建议配合 table_include_list。
job.reader.schema_include_list
1. 参数概述
- 参数名:
job.reader.schema_include_list - 适用范围: MySQL CDC Source
- 单位/类型:
List<String> - 默认值: 默认值请以当前产品配置为准
- 核心作用: schema 过滤(MySQL 场景通常不常用,但保留兼容能力)。
2. 适用场景
- 多 schema 概念的数据源兼容场景;MySQL 通常可忽略。
3. 调参建议 / 推荐配置
4. 参数联动
- 与 database/table include list 存在交集时,以实际过滤行为为准。
5. FAQ(用户提问)
- 问:MySQL 里 schema 是什么?
- 答:很多场景等价于 database。通常建议直接用 database/table include list。
6. 注意事项
7. 总结说明
对 MySQL CDC 来说,schema_include_list 大多不需要配置;优先用 database/table include list。
job.reader.table_include_list
1. 参数概述
- 参数名:
job.reader.table_include_list - 适用范围: MySQL CDC Source
- 单位/类型:
List<String>(支持正则) - 默认值: 默认值请以当前产品配置为准(平台常根据选表自动生成)
- 核心作用: 限定需要捕获的表集合,是 CDC 抓取范围的主要入口之一。
2. 适用场景
- 多库多表,只抓取部分表。
- 需要用正则批量匹配一类表(例如按前缀)。
3. 调参建议 / 推荐配置
- 默认推荐:使用平台自动生成。
- 手工正则:建议先写小范围,确认能抓到数据后再扩大。
4. 参数联动
- 与在线 DDL 工具开关(
ghost_enabled/pt_osc_enabled)联动:开启后可能会自动追加 include/exclude 规则以过滤影子表。
5. FAQ(用户提问)
- 问:我想抓
db1.t1,应该怎么写?- 答:常见写法是
db1\\.t1(注意 . 在正则里需要转义)。
6. 注意事项
- 正则里的
, 在某些解析链路中需要转义,建议配合 auto_escape_include_list_comma。
7. 总结说明le_include_list 是最常用的抓表过滤参数,建议优先让平台生成;手工写正则时循序渐进,避免一次性写太大范围。
job.reader.auto_escape_include_list_comma
1. 参数概述
- 参数名:
job.reader.auto_escape_include_list_comma - 适用范围: MySQL CDC Source
- 单位/类型: Boolean
- 默认值:
true - 核心作用: 是否自动将 include list 中的
, 转义为 \\,,减少用户手工转义负担。
2. 适用场景
- 你的正则里本身包含逗号(
,)且经常因为转义问题导致过滤失效。
3. 调参建议 / 推荐配置
4. 参数联动
- 与
database_include_list / table_include_list 直接相关。
5. FAQ(用户提问)
- 问:为什么我的 include list 一加逗号就报错或不生效?
- 答:可能是解析层把逗号当作分隔符了。保持该参数为 true 通常能减少手动转义。
6. 注意事项
- 如果你已经手工进行了复杂转义,改动该参数可能改变解析结果,建议小流量验证。
7. 总结说明
auto_escape_include_list_comma 是一个“降低正则踩坑概率”的开关,默认开启即可。
七、MySQL 隐式主键(GIPK)兼容
job.reader.sql_generate_invisible_primary_key
1. 参数概述
- 参数名:
job.reader.sql_generate_invisible_primary_key - 适用范围: MySQL CDC Source(MySQL 8.x)
- 单位/类型: Boolean
- 默认值:
false - 核心作用: 开启后,会在连接时注入 on-connect SQL,以支持读取 MySQL 8.x 的隐式主键信息。
2. 适用场景
- MySQL 8.x 环境使用了隐式主键能力,且你发现 CDC 读取到的表元数据缺失主键信息。
3. 调参建议 / 推荐配置
4. 参数联动
- 与下游对主键/唯一键的依赖有关(例如需要主键做 upsert)。
5. FAQ(用户提问)
- 问:不开会怎么样?
- 答:可能导致主键信息缺失,进而影响下游依赖主键的处理(以实际链路为准)。
6. 注意事项
7. 总结说明
sql_generate_invisible_primary_key 用来解决 MySQL 8 隐式主键元数据读取问题,只有在明确需要时再开启。
job.reader.sql_generate_loose_invisible_primary_key
1. 参数概述
- 参数名:
job.reader.sql_generate_loose_invisible_primary_key - 适用范围: MySQL CDC Source(MySQL 5.7 兼容)
- 单位/类型: Boolean
- 默认值:
false - 核心作用: 类似上一项,但针对 MySQL 5.7 的兼容开关。
2. 适用场景
- MySQL 5.7 环境需要兼容读取隐式主键相关元数据时。
3. 调参建议 / 推荐配置
4. 参数联动
- 与
sql_generate_invisible_primary_key 二选一(按 MySQL 版本)。
5. FAQ(用户提问)
- 问:两个参数要都开吗?
- 答:通常按 MySQL 版本选择其一,避免不必要的连接行为变化。
6. 注意事项
7. 总结说明
sql_generate_loose_invisible_primary_key 是 MySQL 5.7 的兼容开关,只有遇到相关元数据问题时再启用。
八、在线 DDL 工具(gh-ost / pt-osc)识别与过滤
job.reader.ghost_enabled
1. 参数概述
- 参数名:
job.reader.ghost_enabled - 适用范围: MySQL CDC Source
- 单位/类型: Boolean
- 默认值:
true - 核心作用: 是否启用 gh-ost 在线 DDL 识别。开启后会忽略 gh-ost 影子表相关事件,并追加过滤规则。
2. 适用场景
- 线上使用 gh-ost 做 DDL 变更,且你不希望 CDC 把影子表当作真实业务表。
3. 调参建议 / 推荐配置
- 默认推荐:保持开启。
- 需要抓取影子表(非常少见):可关闭,但需承担噪声数据/DDL 事件干扰。
4. 参数联动
- 与
table_include_list、ghost_*_pattern 联动。
5. FAQ(用户提问)
- 问:为什么我发现多出一些
_gho/_ghc/_del 表的事件?- 答:可能未正确识别 gh-ost,建议检查是否开启 ghost_enabled 以及 pattern 是否匹配你的命名规则。
6. 注意事项
- 不同团队的 gh-ost 命名可能不同,必要时调整 pattern。
7. 总结说明
ghost_enabled 用于屏蔽 gh-ost 在线 DDL 产生的影子表噪声,默认开启通常更符合生产预期。
job.reader.ghost_data_table_pattern
1. 参数概述
- 参数名:
job.reader.ghost_data_table_pattern - 适用范围: MySQL CDC Source
- 单位/类型: 字符串(正则)
- 默认值:
^.*\\._(.+)_gho$ - 核心作用: gh-ost 数据表命名规则(要求包含原表名捕获组),用于从影子表映射回原表。
2. 适用场景
- 你的 gh-ost 影子表命名不符合默认规则,导致识别失败。
3. 调参建议 / 推荐配置
4. 参数联动
- 仅在
ghost_enabled=true 时有意义。
5. FAQ(用户提问)
- 问:为什么必须有捕获组?
- 答:需要从影子表名中提取“原表名”,否则无法正确归因。
6. 注意事项
7. 总结说明
ghost_data_table_pattern 用来识别 gh-ost 的影子表并提取原表名,通常无需改动。
job.reader.ghost_exclude_table_pattern
1. 参数概述
- 参数名:
job.reader.ghost_exclude_table_pattern - 适用范围: MySQL CDC Source
- 单位/类型: 字符串(正则)
- 默认值:
^.*\\._.+_(?:ghc|del)$ - 核心作用: gh-ost 排除表规则,用于识别 ghc/del 等中间表并过滤。
2. 适用场景
3. 调参建议 / 推荐配置
4. 参数联动
- 仅在
ghost_enabled=true 时有意义。
5. FAQ(用户提问)
6. 注意事项
7. 总结说明
ghost_exclude_table_pattern 用来过滤 gh-ost 中间表,默认通常可用,只有命名不一致才需要调整。
job.reader.pt_osc_enabled
1. 参数概述
- 参数名:
job.reader.pt_osc_enabled - 适用范围: MySQL CDC Source
- 单位/类型: Boolean
- 默认值:
false - 核心作用: 是否启用 pt-osc 在线 DDL 识别。开启后会忽略影子表相关事件并追加过滤规则。
2. 适用场景
- 线上使用 pt-osc 做 DDL 变更,且你不希望 CDC 把影子表当作真实业务表。
3. 调参建议 / 推荐配置
- 只有当你确认线上使用 pt-osc 时才建议开启。
4. 参数联动
5. FAQ(用户提问)
6. 注意事项
- 如果你既用 gh-ost 又用 pt-osc,需分别评估两个开关。
7. 总结说明
pt_osc_enabled 用于屏蔽 pt-osc 影子表噪声,仅在确实使用 pt-osc 的环境建议开启。
job.reader.pt_osc_include_table_pattern
1. 参数概述
- 参数名:
job.reader.pt_osc_include_table_pattern - 适用范围: MySQL CDC Source
- 单位/类型: 字符串(正则)
- 默认值:
^.*\\._(.+)_new$ - 核心作用: pt-osc new 表命名规则(要求包含原表名捕获组)。
2. 适用场景
3. 调参建议 / 推荐配置
4. 参数联动
- 仅在
pt_osc_enabled=true 时有意义。
5. FAQ(用户提问)
6. 注意事项
7. 总结说明
pt_osc_include_table_pattern 用来识别 pt-osc new 表并提取原表名,通常无需改动。
job.reader.pt_osc_exclude_table_pattern
1. 参数概述
- 参数名:
job.reader.pt_osc_exclude_table_pattern - 适用范围: MySQL CDC Source
- 单位/类型: 字符串(正则)
- 默认值:
^.*\\._.+_old$ - 核心作用: pt-osc old 表排除 pattern。
2. 适用场景
3. 调参建议 / 推荐配置
4. 参数联动
- 仅在
pt_osc_enabled=true 时有意义。
5. FAQ(用户提问)
6. 注意事项
7. 总结说明
pt_osc_exclude_table_pattern 用于过滤 pt-osc old 表噪声,默认可用,命名不一致时再调整。
1. 参数概述
- 参数名:
job.reader.meta_db_seq_enabled - 适用范围: MySQL CDC Source
- 单位/类型: Boolean
- 默认值:
true - 核心作用: 是否输出
_db_seq_ 元数据字段。
2. 适用场景
- 下游希望使用序号/顺序字段做辅助去重、排障或审计。
3. 调参建议 / 推荐配置
- 默认开启即可;若下游 schema 不允许新增列,可关闭。
4. 参数联动
5. FAQ(用户提问)
- 问:这个字段一定有用吗?
- 答:不是必需字段,更多用于排障/辅助定位。下游不需要可以关闭。
6. 注意事项
7. 总结说明a_db_seq_enabled 控制是否输出 _db_seq_ 辅助字段,下游不需要额外列时可关闭。
1. 参数概述
- 参数名:
job.reader.meta_latency_timestamp_enabled - 适用范围: MySQL CDC Source
- 单位/类型: Boolean
- 默认值:
true - 核心作用: 是否输出延迟相关元数据字段(如
input_ms / ts_ms)。
2. 适用场景
3. 调参建议 / 推荐配置
- 默认开启;若下游 schema 严格且不接受额外列,可关闭。
4. 参数联动
5. FAQ(用户提问)
- 问:我怎么用这些字段看延迟?
- 答:常见做法是
now() - ts_ms(或 input_ms - ts_ms)评估端到端/处理延迟。
6. 注意事项
7. 总结说明
meta_latency_timestamp_enabled 决定是否输出用于延迟观测的字段,建议默认开启以方便排障。
1. 参数概述
- 参数名:
job.reader.src_meta_info_column_enabled - 适用范围: MySQL CDC Source
- 单位/类型: Boolean
- 默认值:
false - 核心作用: 是否输出
_src_meta_info_ 元数据字段,用于标识来源实例/表信息,适合多路复用场景。
2. 适用场景
- 多库多表、多任务合流写入同一 downstream,需要在记录级别保留来源信息。
3. 调参建议 / 推荐配置
- 非多路复用场景保持关闭。
- 多路复用场景开启,并与下游 schema 预留字段。
4. 参数联动
- 与
job.reader.src_meta_info_column_name 联动。
5. FAQ(用户提问)
- 问:开启后下游字段冲突怎么办?
- 答:可以通过
src_meta_info_column_name 改字段名,或在下游做字段映射。
6. 注意事项
7. 总结说明
src_meta_info_column_enabled 用于在记录里带上来源信息,多路复用合流场景很有用,但需要下游支持新增列。
1. 参数概述
- 参数名:
job.reader.src_meta_info_column_name - 适用范围: MySQL CDC Source
- 单位/类型: 字符串
- 默认值:
_src_meta_info_ - 核心作用: 指定来源元信息字段的列名。
2. 适用场景
3. 调参建议 / 推荐配置
- 默认即可;如需改名建议与下游字段命名规范保持一致。
4. 参数联动
- 仅在
src_meta_info_column_enabled=true 时生效。 - 与
job.common.cdc_multiplex_record_case_insensitive 有大小写联动:开启该开关时字段名可能被统一转大写(以产品实现为准)。
5. FAQ(用户提问)
- 问:为什么我配置的小写字段名变成了大写?
- 答:可能开启了
cdc_multiplex_record_case_insensitive,用于大小写兼容。
6. 注意事项
7. 总结说明
src_meta_info_column_name 允许你自定义来源字段名,主要用于避免字段冲突或匹配下游命名规范。
十、反序列化与类型兼容
job.reader.enable_unified_seder_type
1. 参数概述
- 参数名:
job.reader.enable_unified_seder_type - 适用范围: MySQL CDC Source
- 单位/类型: Boolean
- 默认值:
true - 核心作用: 是否启用“统一序列化/反序列化类型”。开启后优先使用 split 中记录的 schema datatype;关闭则更多从事件推断。
2. 适用场景
- Schema 演进频繁、希望类型解析更稳定时。
- 遇到类型推断不一致导致的下游 schema mismatch。
3. 调参建议 / 推荐配置
- 默认推荐:保持开启。
- 排障:若怀疑统一类型导致兼容问题,可临时关闭对比验证。
4. 参数联动
- 与
type_properties、以及下游对类型严格程度相关。
5. FAQ(用户提问)
- 问:关闭后是不是更“灵活”?
- 答:可能更容易适配部分数据,但也可能带来推断不一致。建议以稳定为先。
6. 注意事项
7. 总结说明
enable_unified_seder_type 用于提升类型解析稳定性,默认开启更稳;只有排查兼容问题时才建议临时关闭。
job.reader.add_zone_offset_to_zero_timestamp
1. 参数概述
- 参数名:
job.reader.add_zone_offset_to_zero_timestamp - 适用范围: MySQL CDC Source
- 单位/类型: Boolean
- 默认值: 引擎默认
false;部分产品模板可能会默认设为 true(请以当前产品配置为准) - 核心作用: 处理
0000-00-00 00:00:00 这类 zero timestamp。开启后会把 0 毫秒值加上本地时区 offset,降低下游解析异常概率。
2. 适用场景
- 上游存在历史“零时间”数据,下游解析/落库经常失败(常见关键字:
zero timestamp、invalid datetime)。
3. 调参建议 / 推荐配置
- 默认推荐:当你确认上游有零时间数据且下游敏感时开启。
- 排障:出现时间字段解析报错时,可先开启验证。
4. 参数联动
- 与时区配置、下游时间类型(timestamp/datetime)处理有关。
5. FAQ(用户提问)
- 问:开启会不会改变业务语义?
- 答:会把“零时间”转成一个带时区 offset 的值,这属于兼容性折中,建议评估下游使用方式。
6. 注意事项
- 这是“为了不中断而做的兼容”,不等价于修复源数据质量。
7. 总结说明
add_zone_offset_to_zero_timestamp 用于兼容 MySQL 的零时间值,能减少下游解析失败,但会带来一定语义折中,建议按需启用。
job.reader.type_properties
1. 参数概述
- 参数名:
job.reader.type_properties - 适用范围: MySQL CDC Source
- 单位/类型:
Map<String,String> - 默认值: 无
- 核心作用: 类型转换相关的属性集合,用于影响部分字段类型映射(以产品支持为准)。
2. 适用场景
- 你遇到“类型映射不符合预期”(例如 tinyint(1) 想映射 boolean)的场景。
3. 调参建议 / 推荐配置
4. 参数联动
- 与
type_properties.tinyint_to_boolean(常见子项)联动。
5. FAQ(用户提问)
- 问:type_properties 里能放哪些键?
- 答:不同版本/产品支持不同,建议以平台文档/示例为准,避免自行猜测。
6. 注意事项
- 不同类型策略可能影响下游表结构兼容与历史数据一致性。
7. 总结说明
type_properties 用于做类型映射的高级定制,建议谨慎、小范围使用。
job.reader.type_properties.tinyint_to_boolean
1. 参数概述
- 参数名:
job.reader.type_properties.tinyint_to_boolean - 适用范围: MySQL CDC Source
- 单位/类型: Boolean
- 默认值:
false - 核心作用: 当列类型为
TINYINT(1) 时是否映射为 Boolean。
2. 适用场景
- 历史表把布尔值用
TINYINT(1) 表达,下游希望得到 true/false。
3. 调参建议 / 推荐配置
- 默认推荐:保持关闭。
- 确实需要 boolean 语义:开启,但需同步下游 schema。
4. 参数联动
5. FAQ(用户提问)
- 问:开启后为什么下游字段类型冲突?
- 答:下游可能仍按整数建表/解析,需要同步修改下游 schema 或映射。
6. 注意事项
- 该参数可能影响历史数据一致性,建议在新链路或明确可控场景启用。
7. 总结说明
tinyint_to_boolean 用于把 TINYINT(1) 按布尔语义处理,只有当下游明确需要 boolean 且能同步 schema 时才建议开启。
十一、job.common.*(平台/运行时通用参数)
job.common.job_id
1. 参数概述
- 参数名:
job.common.job_id - 适用范围: 平台侧通用
- 单位/类型: Long
- 默认值: 通常由平台自动生成(无需用户配置)
- 核心作用: 用于生成 server_name/server_id 的默认值等内部标识。
2. 适用场景
3. 调参建议 / 推荐配置
4. 参数联动
- 与
identifier、server_name/server_id 默认生成逻辑相关。
5. FAQ(用户提问)
- 问:我能改 job_id 来“重置任务”吗?
- 答:不建议。job_id 通常由平台管理,手动改可能带来不可预期的任务标识混乱。
6. 注意事项
7. 总结说明
job.common.job_id 一般由平台自动分配,用户无需配置,更多用于内部标识与排障定位。
job.common.metric_ttl
1. 参数概述
- 参数名:
job.common.metric_ttl - 适用范围: 通用运行时
- 单位/类型: Integer
- 默认值:
-1(通常表示不过期,具体以产品语义为准) - 核心作用: SourceReader 指标 TTL,影响指标保留时长与可观测性。
2. 适用场景
3. 调参建议 / 推荐配置
- 大多数场景保持默认。
- 只有在监控/指标系统明确提示压力时才建议设置一个合理 TTL。
4. 参数联动
5. FAQ(用户提问)
6. 注意事项
7. 总结说明
metric_ttl 用于控制指标保留时长,大多数任务保持默认即可;只有在指标压力明显时再按需设置。
job.common.cdc_multiplex_record_case_insensitive
1. 参数概述
- 参数名:
job.common.cdc_multiplex_record_case_insensitive - 适用范围: 通用 CDC 多路复用
- 单位/类型: Boolean
- 默认值:
true - 核心作用: 多路复用记录的大小写兼容开关;可能影响
_src_meta_info_ 等元数据字段名是否被统一转大写(以产品实现为准)。
2. 适用场景
3. 调参建议 / 推荐配置
- 默认开启即可;只有当你明确需要保留字段原始大小写时才评估关闭。
4. 参数联动
- 与
src_meta_info_column_name 等元数据字段命名联动。
5. FAQ(用户提问)
- 问:我下游区分大小写,怎么办?
- 答:需要评估是否关闭该开关,并同步下游字段映射策略。
6. 注意事项
- 修改该参数可能影响字段映射与下游 schema 兼容,建议谨慎。
7. 总结说明
cdc_multiplex_record_case_insensitive 用于提升多路复用场景的大小写兼容性,默认开启更省心;需要严格大小写时再评估关闭。