TiCDC Server 配置

本文介绍 TiCDC 的命令行参数和配置文件定义。

cdc server 命令行参数说明

对于 cdc server 命令中可用选项解释如下:

  • addr:TiCDC 的监听地址,提供服务的 HTTP API 查询地址和 Prometheus 查询地址,默认为 127.0.0.1:8300
  • advertise-addr:TiCDC 对外开放地址,供客户端访问。如果未设置该参数值,地址默认与 addr 相同。
  • pd:TiCDC 监听的 PD 节点地址,用 , 来分隔多个 PD 节点地址。
  • config:可选项,表示 TiCDC 使用的配置文件地址。TiCDC 从 v5.0.0 开始支持该选项,TiUP 从 v1.4.0 开始支持在部署 TiCDC 时使用该配置。配置文件的格式说明详见:TiCDC Changefeed 配置参数
  • data-dir:指定 TiCDC 使用磁盘储存文件时的目录。目前 TiCDC 内部的排序引擎和 redo log 等特性会使用该目录储存临时文件,建议确保该目录所在设备的可用空间大于等于 500 GiB。如果你使用 TiUP,本选项可以通过配置 cdc_servers 中的 data_dir 来指定或默认使用 globaldata_dir 路径。
  • gc-ttl:TiCDC 在 PD 设置的服务级别 GC safepoint 的 TTL (Time To Live) 时长,和 TiCDC 同步任务所能够停滞的时长。单位为秒,默认值为 86400,即 24 小时。注意:TiCDC 同步任务的停滞会影响 TiCDC GC safepoint 的推进,即会影响上游 TiDB GC 的推进,详情可以参考 TiCDC GC safepoint 的完整行为
  • log-file:TiCDC 进程运行时日志的输出地址,未设置时默认为标准输出 (stdout)。
  • log-level:TiCDC 进程运行时的日志级别,默认为 "info"
  • ca:TiCDC 创建 TLS 连接时使用的 CA 证书文件路径,PEM 格式,可选。
  • cert:TiCDC 创建 TLS 连接时使用的证书文件路径,PEM 格式,可选。
  • cert-allowed-cn:TiCDC 创建 TLS 连接时使用的通用名称文件路径,可选。
  • key:TiCDC 创建 TLS 连接时使用的证书密钥文件路径,PEM 格式,可选。
  • tz:TiCDC 服务使用的时区。TiCDC 在内部转换 TIMESTAMP 等时间数据类型和向下游同步数据时使用该时区,默认为进程运行本地时区。(注意如果同时指定 tz 参数和 sink-uri 中的 time-zone 参数,TiCDC 进程内部使用 tz 指定的时区,sink 向下游执行时使用 time-zone 指定的时区,请保持二者一致。)
  • cluster-id:TiCDC 集群的 ID。可选,默认值为 defaultcluster-id 是 TiCDC 集群的唯一标识,拥有相同 cluster-id 的 TiCDC 节点同属一个集群。长度最大为 128,需要符合正则表达式 ^[a-zA-Z0-9]+(-[a-zA-Z0-9]+)*$,且不能是以下值:ownercapturetaskchangefeedjobmeta

cdc server 配置文件说明

对于 cdc server 命令中 config 参数指定的配置文件说明如下:

  1. # 下面的字段的配置含义与命令行参数相同,但是命令行参数优先级更高。
  2. addr = "127.0.0.1:8300"
  3. advertise-addr = ""
  4. log-file = ""
  5. log-level = "info"
  6. data-dir = ""
  7. gc-ttl = 86400 # 24 h
  8. tz = "System"
  9. cluster-id = "default"
  10. # 控制 GOGC Tuner 自动调节的最大内存阈值(单位为 byte):设置较小的阈值会提高 GC 频率;设置较大的阈值会降低 GC 频率并使 TiCDC 进程占用更多的内存资源;超过阈值后 GOGC Tuner 会停止工作。默认值为 0,表示禁用 GOGC Tuner。
  11. gc-tuner-memory-threshold = 0
  12. [security]
  13. ca-path = ""
  14. cert-path = ""
  15. key-path = ""
  16. # 控制是否开启 TLS 客户端鉴权,默认值为 false。
  17. mtls = false
  18. # 控制是否使用用户名和密码进行客户端鉴权,默认值为 false。
  19. client-user-required = false
  20. # 指定可用于客户端鉴权的用户名,列表中不存在的用户的鉴权请求将被直接拒绝。默认值为 null。
  21. client-allowed-user = ["username_1", "username_2"]
  22. # TiCDC 与 etcd 服务间的 session 时长(单位为秒),默认为 10,可选。
  23. capture-session-ttl = 10 # 10s
  24. # TiCDC 集群中的 owner 模块尝试推进同步任务进度的周期,默认值为 `50000000` 纳秒(即 50 毫秒),可选。该参数有两种配置方式:只指定数字(例如,配置为 `40000000` 表示 40000000 纳秒,即 40 毫秒),或同时指定数字和单位(例如,直接配置为 `40ms`)。
  25. owner-flush-interval = 50000000 # 50 ms
  26. # TiCDC 集群中的 processor 模块尝试推进同步任务进度的周期,默认值为 `50000000` 纳秒(即 50 毫秒),可选。该参数配置方式与 `owner-flush-interval` 相同。
  27. processor-flush-interval = 50000000 # 50 ms
  28. # [log]
  29. # # 用于指定 zap log 模块内部的错误日志的输出位置。默认是 "stderr",可选。
  30. # error-output = "stderr"
  31. # [log.file]
  32. # # 单个 log 文件的最大文件大小,单位为 MiB。默认值为 300,可选。
  33. # max-size = 300 # 300 MiB
  34. # # log 文件最长保留天数,默认值为 `0`,代表永不删除,可选。
  35. # max-days = 0
  36. # # log 文件的保留个数,默认值为 `0`,代表保留所有 log 文件,可选。
  37. # max-backups = 0
  38. #[sorter]
  39. # Sorter 模块给默认启动的 8 个 pebble DB 共享的 pebble block cache 的大小,单位为 MiB,默认值为 128。
  40. # cache-size-in-mb = 128
  41. # Sorter 文件相对于 data-dir 的目录,默认值为 "/tmp/sorter",可选。
  42. # sorter-dir = "/tmp/sorter"
  43. # [kv-client]
  44. # 单个 Region worker 中可使用的线程数量,默认为 8,可选。
  45. # worker-concurrent = 8
  46. # TiCDC 中共享线程池中线程的数量,主要用于处理 KV 事件,默认值为 `0`,表示默认为 CPU 核数的 2 倍,可选。
  47. # worker-pool-size = 0
  48. # Region 连接重试时间,默认值为 `60000000000` 纳秒(即 1 分钟),可选。该参数有两种配置方式:只指定数字(例如,配置为 `50000000` 表示 50000000 纳秒,即 50 毫秒),或同时指定数字和单位(例如,直接配置为 `50ms`)。
  49. # region-retry-duration = 60000000000