TiCDC OpenAPI v2

TiCDC 提供 OpenAPI 功能,你可以通过 OpenAPI v2 对 TiCDC 集群进行查询和运维操作。OpenAPI 的功能是 cdc cli 工具的一个子集。

TiCDC Open API v2 - 图1

注意

  • TiCDC v6.5.x 系列从 v6.5.2 起支持 OpenAPI v2。如果你的 TiCDC 版本为 v6.5.0 或 v6.5.1,请使用 TiCDC OpenAPI v1
  • TiCDC OpenAPI v1 将在未来版本中被删除。推荐使用 TiCDC OpenAPI v2。

你可以通过 OpenAPI 完成 TiCDC 集群的如下运维操作:

所有 API 的请求体与返回值统一使用 JSON 格式数据。请求如果成功,则统一返回 200 OK。本文档以下部分描述当前提供的 API 的具体使用方法。

在下文的示例描述中,假设 TiCDC server 的监听 IP 地址为 127.0.0.1,端口为 8300。在启动 TiCDC server 时,可以通过 --addr=ip:port 指定 TiCDC 绑定的 IP 地址和端口。

API 统一错误格式

对 API 发起请求后,如发生错误,返回错误信息的格式如下所示:

  1. {
  2. "error_msg": "",
  3. "error_code": ""
  4. }

如上所示,error_msg 描述错误信息,error_code 则是对应的错误码。

API List 接口统一返回格式

一个 API 请求如果返回是一个资源列表(例如,返回所有的服务进程 Captures),TiCDC 统一的返回格式如下:

  1. {
  2. "total": 2,
  3. "items": [
  4. {
  5. "id": "d2912e63-3349-447c-90ba-wwww",
  6. "is_owner": true,
  7. "address": "127.0.0.1:8300"
  8. },
  9. {
  10. "id": "d2912e63-3349-447c-90ba-xxxx",
  11. "is_owner": false,
  12. "address": "127.0.0.1:8302"
  13. }
  14. ]
  15. }

如上所示:

  • total: 表示有一共有多少个资源。
  • items: 当次请求返回的资源在这个数组里,数组所有的元素都是同种资源。

获取 TiCDC 节点状态信息

该接口是一个同步接口,请求成功会返回对应节点的状态信息。

请求 URI

GET /api/v2/status

使用样例

以下请求会获取 IP 地址为 127.0.0.1,端口号为 8300 的 TiCDC 节点的状态信息。

  1. curl -X GET http://127.0.0.1:8300/api/v2/status
  1. {
  2. "version": "v7.0.0-master-dirty",
  3. "git_hash": "10413bded1bdb2850aa6d7b94eb375102e9c44dc",
  4. "id": "d2912e63-3349-447c-90ba-72a4e04b5e9e",
  5. "pid": 1447,
  6. "is_owner": true,
  7. "liveness": 0
  8. }

以上返回信息的字段解释如下:

  • version:当前 TiCDC 版本号。
  • git_hash:Git 哈希值。
  • id:该节点的 capture ID。
  • pid:该节点 capture 进程的 PID。
  • is_owner:表示该节点是否是 owner。
  • liveness: 该节点是否在线。0 表示正常,1 表示处于 graceful shutdown 状态。

检查 TiCDC 集群的健康状态

该接口是一个同步接口,在集群健康的时候会返回 200 OK

请求 URI

GET /api/v2/health

使用样例

  1. curl -X GET http://127.0.0.1:8300/api/v2/health

如果集群健康,则返回 200 OK 和一个空的 json {}:

  1. {}

如果集群不健康,则返回错误信息。

创建同步任务

该接口用于向 TiCDC 提交一个同步任务,请求成功会返回 200 OK。该返回结果表示服务器收到了执行命令指示,并不代表命令被成功执行。

请求 URI

POST /api/v2/changefeeds

参数说明

  1. {
  2. "changefeed_id": "string",
  3. "replica_config": {
  4. "bdr_mode": true,
  5. "case_sensitive": true,
  6. "check_gc_safe_point": true,
  7. "consistent": {
  8. "flush_interval": 0,
  9. "level": "string",
  10. "max_log_size": 0,
  11. "storage": "string"
  12. },
  13. "enable_old_value": true,
  14. "enable_sync_point": true,
  15. "filter": {
  16. "do_dbs": [
  17. "string"
  18. ],
  19. "do_tables": [
  20. {
  21. "database_name": "string",
  22. "table_name": "string"
  23. }
  24. ],
  25. "event_filters": [
  26. {
  27. "ignore_delete_value_expr": "string",
  28. "ignore_event": [
  29. "string"
  30. ],
  31. "ignore_insert_value_expr": "string",
  32. "ignore_sql": [
  33. "string"
  34. ],
  35. "ignore_update_new_value_expr": "string",
  36. "ignore_update_old_value_expr": "string",
  37. "matcher": [
  38. "string"
  39. ]
  40. }
  41. ],
  42. "ignore_dbs": [
  43. "string"
  44. ],
  45. "ignore_tables": [
  46. {
  47. "database_name": "string",
  48. "table_name": "string"
  49. }
  50. ],
  51. "ignore_txn_start_ts": [
  52. 0
  53. ],
  54. "rules": [
  55. "string"
  56. ]
  57. },
  58. "force_replicate": true,
  59. "ignore_ineligible_table": true,
  60. "memory_quota": 0,
  61. "mounter": {
  62. "worker_num": 0
  63. },
  64. "sink": {
  65. "column_selectors": [
  66. {
  67. "columns": [
  68. "string"
  69. ],
  70. "matcher": [
  71. "string"
  72. ]
  73. }
  74. ],
  75. "csv": {
  76. "delimiter": "string",
  77. "include_commit_ts": true,
  78. "null": "string",
  79. "quote": "string"
  80. },
  81. "date_separator": "string",
  82. "dispatchers": [
  83. {
  84. "matcher": [
  85. "string"
  86. ],
  87. "partition": "string",
  88. "topic": "string"
  89. }
  90. ],
  91. "enable_partition_separator": true,
  92. "encoder_concurrency": 0,
  93. "protocol": "string",
  94. "schema_registry": "string",
  95. "terminator": "string",
  96. "transaction_atomicity": "string"
  97. },
  98. "sync_point_interval": "string",
  99. "sync_point_retention": "string"
  100. },
  101. "sink_uri": "string",
  102. "start_ts": 0,
  103. "target_ts": 0
  104. }

参数说明如下:

参数名说明
changefeed_idSTRING 类型,同步任务的 ID。(非必选)
replica_config同步任务的配置参数。(非必选)
sink_uriSTRING 类型,同步任务下游的地址。(必选
start_tsUINT64 类型,指定 changefeed 的开始 TSO。TiCDC 集群将从这个 TSO 开始拉取数据。默认为当前时间。(非必选)
target_tsUINT64 类型,指定 changefeed 的目标 TSO。达到这个 TSO 后,TiCDC 集群将停止拉取数据。默认为空,即 TiCDC 不会自动停止。(非必选)

changefeed_idstart_tstarget_tssink_uri 的含义和格式与使用 cli 创建同步任务中所作的解释相同,具体解释请参见该文档。需要注意,当在 sink_uri 中指定证书的路径时,须确保已将对应证书上传到对应的 TiCDC server 上。

replica_config 参数说明如下:

参数名说明
bdr_modeBOOLEAN 类型,是否开启双向同步复制。默认值为 false。(非必选)
case_sensitiveBOOLEAN 类型,过滤表名时大小写是否敏感,默认值为 true。(非必选)
check_gc_safe_pointBOOLEAN 类型,是否检查同步任务的开始时间早于 GC 时间,默认值为 true。(非必选)
consistentRedo log 配置。(非必选)
enable_old_valueBOOLEAN 类型,是否输出 old value 值(即变更前的值),默认值为 true。(非必选)
enable_sync_pointBOOLEAN 类型,是否开启 sync point 功能。(非必选)
filterfilter 配置。(非必选)
force_replicateBOOLEAN 类型,该值默认为 false,当指定为 true 时,同步任务会尝试强制同步没有唯一索引的表。(非必选)
ignore_ineligible_tableBOOLEAN 类型,该值默认为 false,当指定为 true 时,同步任务会忽略无法进行同步的表。(非必选)
memory_quotaUINT64 类型,同步任务的内存 quota。(非必选)
mounter同步任务 mounter 配置。(非必选)
sink同步任务的sink配置。(非必选)
sync_point_intervalSTRING 类型,注意返回值为 UINT64 类型的纳秒级时间,sync point 功能开启时,对齐上下游 snapshot 的时间间隔。默认值为 10m,最小值为 30s。(非必选)
sync_point_retentionSTRING 类型,注意返回值为 UINT64 类型的纳秒级时间,sync point 功能开启时,在下游表中保存的数据的时长,超过这个时间的数据会被清理。默认值为 24h。(非必选)

consistent 参数说明如下:

参数名说明
flush_intervalUINT64 类型,redo log 文件 flush 间隔。(非必选)
levelSTRING 类型,同步数据的一致性级别。(非必选)
max_log_sizeUINT64 类型,redo log 的最大值。(非必选)
storageSTRING 类型,存储的目标地址。(非必选)

filter 参数说明如下:

参数名说明
do_dbsSTRING ARRAY 类型,需要同步的数据库。(非必选)
do_tables需要同步的表。(非必选)
ignore_dbsSTRING ARRAY 类型,不同步的数据库。(非必选)
ignore_tables不同步的表。(非必选)
event_filtersevent 过滤配置。(非必选)
ignore_txn_start_tsUINT64 ARRAY 类型,指定之后会忽略指定 start_ts 的事务,如 [1, 2]。(非必选)
rulesSTRING ARRAY 类型,表库过滤的规则,如 [‘foo.‘, ‘bar.‘]。详情请参考表库过滤。(非必选)

filter.event_filters 参数说明如下,可参考日志过滤器

参数名说明
ignore_delete_value_exprSTRING ARRAY 类型,如 “name = ‘john’” 表示过滤掉包含 name = ‘john’ 条件的 DELETE DML。(非必选)
ignore_eventSTRING ARRAY 类型,如 [“insert”] 表示过滤掉 INSERT 事件。(非必选)
ignore_insert_value_exprSTRING ARRAY 类型,如 “id >= 100” 表示过滤掉包含 id >= 100 条件的 INSERT DML。(非必选)
ignore_sqlSTRING ARRAY 类型,如 [“^drop”, “add column”] 表示过滤掉以 DROP 开头或者包含 ADD COLUMN 的 DDL。(非必选)
ignore_update_new_value_exprSTRING ARRAY 类型,如 “gender = ‘male’” 表示过滤掉新值 gender = ‘male’ 的 UPDATE DML。(非必选)
ignore_update_old_value_exprSTRING ARRAY 类型,如 “age < 18” 表示过滤掉旧值 age < 18 的 UPDATE DML。(非必选)
matcherSTRING ARRAY 类型,是一个白名单,如 [“test.worker”],表示该过滤规则只应用于 test 库中的 worker 表。(非必选)

mounter 参数说明如下:

参数名说明
worker_numINT 类型。Mounter 线程数,Mounter 用于解码 TiKV 输出的数据,默认值为 16。(非必选)

sink 参数说明如下:

参数名说明
column_selectorscolumn selector 配置。(非必选)
csvCSV 配置。(非必选)
date_separatorSTRING 类型,文件路径的日期分隔类型。可选类型有 noneyearmonthday。默认值为 none,即不使用日期分隔。(非必选)
dispatchers事件分发配置数组。(非必选)
encoder_concurrencyINT 类型。MQ sink 中编码器的线程数。默认值为 16。(非必选)
protocolSTRING 类型,对于 MQ 类的 Sink,可以指定消息的协议格式。目前支持以下协议:canal-jsonopen-protocolcanalavromaxwell
schema_registrySTRING 类型,schema registry 地址。(非必选)
terminatorSTRING 类型,换行符,用来分隔两个数据变更事件。默认值为空,表示使用 “\r\n” 作为换行符。(非必选)
transaction_atomicitySTRING 类型,事务一致性等级。(非必选)

sink.column_selectors 是一个数组,元素参数说明如下:

参数名说明
columnsSTRING ARRAY 类型,column 数组。
matcherSTRING ARRAY 类型,matcher 配置,匹配语法和过滤器规则的语法相同。

sink.csv 参数说明如下:

参数名说明
delimiterSTRING 类型,字段之间的分隔符。必须为 ASCII 字符,默认值为 ,
include_commit_tsBOOLEAN 类型,是否在 CSV 行中包含 commit-ts。默认值为 false
nullSTRING 类型,如果这一列是 null,那这一列该如何表示。默认是用 \N 来表示。
quoteSTRING 类型,用于包裹字段的引号字符。空值代表不使用引号字符。默认值为

sink.dispatchers:对于 MQ 类的 Sink,可以通过该参数配置 event 分发器,支持以下分发器:defaulttsrowidtable 。分发规则如下:

  • default:有多个唯一索引(包括主键)时按照 table 模式分发;只有一个唯一索引(或主键)时按照 rowid 模式分发;如果开启了 old value 特性,按照 table 模式分发。
  • ts:以行变更的 commitTs 做 Hash 计算并进行 event 分发。
  • rowid:以所选的 HandleKey 列名和列值做 Hash 计算并进行 event 分发。
  • table:以表的 schema 名和 table 名做 Hash 计算并进行 event 分发。

sink.dispatchers 是一个数组,元素参数说明如下:

参数名说明
matcherSTRING ARRAY 类型,匹配语法和过滤器规则的语法相同。
partitionSTRING 类型,事件分发的目标 partition。
topicSTRING 类型,事件分发的目标 topic。

使用样例

以下请求会创建一个 ID 为 test5,sink_uri 为 blackhole:// 的同步任务。

  1. curl -X POST -H "'Content-type':'application/json'" http://127.0.0.1:8300/api/v2/changefeeds -d '{"changefeed_id":"test5","sink_uri":"blackhole://"}'

如果请求成功,则返回 200 OK。如果请求失败,则返回错误信息和错误码。

响应体格式

  1. {
  2. "admin_job_type": 0,
  3. "checkpoint_time": "string",
  4. "checkpoint_ts": 0,
  5. "config": {
  6. "bdr_mode": true,
  7. "case_sensitive": true,
  8. "check_gc_safe_point": true,
  9. "consistent": {
  10. "flush_interval": 0,
  11. "level": "string",
  12. "max_log_size": 0,
  13. "storage": "string"
  14. },
  15. "enable_old_value": true,
  16. "enable_sync_point": true,
  17. "filter": {
  18. "do_dbs": [
  19. "string"
  20. ],
  21. "do_tables": [
  22. {
  23. "database_name": "string",
  24. "table_name": "string"
  25. }
  26. ],
  27. "event_filters": [
  28. {
  29. "ignore_delete_value_expr": "string",
  30. "ignore_event": [
  31. "string"
  32. ],
  33. "ignore_insert_value_expr": "string",
  34. "ignore_sql": [
  35. "string"
  36. ],
  37. "ignore_update_new_value_expr": "string",
  38. "ignore_update_old_value_expr": "string",
  39. "matcher": [
  40. "string"
  41. ]
  42. }
  43. ],
  44. "ignore_dbs": [
  45. "string"
  46. ],
  47. "ignore_tables": [
  48. {
  49. "database_name": "string",
  50. "table_name": "string"
  51. }
  52. ],
  53. "ignore_txn_start_ts": [
  54. 0
  55. ],
  56. "rules": [
  57. "string"
  58. ]
  59. },
  60. "force_replicate": true,
  61. "ignore_ineligible_table": true,
  62. "memory_quota": 0,
  63. "mounter": {
  64. "worker_num": 0
  65. },
  66. "sink": {
  67. "column_selectors": [
  68. {
  69. "columns": [
  70. "string"
  71. ],
  72. "matcher": [
  73. "string"
  74. ]
  75. }
  76. ],
  77. "csv": {
  78. "delimiter": "string",
  79. "include_commit_ts": true,
  80. "null": "string",
  81. "quote": "string"
  82. },
  83. "date_separator": "string",
  84. "dispatchers": [
  85. {
  86. "matcher": [
  87. "string"
  88. ],
  89. "partition": "string",
  90. "topic": "string"
  91. }
  92. ],
  93. "enable_partition_separator": true,
  94. "encoder_concurrency": 0,
  95. "protocol": "string",
  96. "schema_registry": "string",
  97. "terminator": "string",
  98. "transaction_atomicity": "string"
  99. },
  100. "sync_point_interval": "string",
  101. "sync_point_retention": "string"
  102. },
  103. "create_time": "string",
  104. "creator_version": "string",
  105. "error": {
  106. "addr": "string",
  107. "code": "string",
  108. "message": "string"
  109. },
  110. "id": "string",
  111. "resolved_ts": 0,
  112. "sink_uri": "string",
  113. "start_ts": 0,
  114. "state": "string",
  115. "target_ts": 0,
  116. "task_status": [
  117. {
  118. "capture_id": "string",
  119. "table_ids": [
  120. 0
  121. ]
  122. }
  123. ]
  124. }

参数说明如下:

参数名说明
admin_job_typeINTEGER 类型,admin 事件类型
checkpoint_timeSTRING 类型,同步任务当前 checkpoint 的格式化时间表示
checkpoint_tsSTRING 类型,同步任务当前 checkpoint 的 TSO 表示
config同步任务配置,结构和含义与创建同步任务中的 replica_config 配置项相同
create_timeSTRING 类型,同步任务创建的时间
creator_versionSTRING 类型,同步任务创建时 TiCDC 的版本
error同步任务错误
idSTRING 类型,同步任务 ID
resolved_tsUINT64 类型,同步任务 resolved ts
sink_uriSTRING 类型,同步任务的 sink uri
start_tsUINT64 类型,同步任务 start ts
stateSTRING 类型,同步任务状态,状态可分为 normalstoppederrorfailedfinished
target_tsUINT64 类型,同步任务的 target ts
task_status同步任务分发的详细状态

task_status 参数说明如下:

参数名说明
capture_idSTRING 类型,Capture ID
table_idsUINT64 ARRAY 类型,该 Capture 上正在同步的 table 的 ID

error 参数说明如下:

参数名说明
addrSTRING 类型,Capture 地址
codeSTRING 类型,错误码
messageSTRING 类型,错误的详细信息

删除同步任务

该接口是幂等的(即其任意多次执行所产生的影响均与一次执行的影响相同),用于删除一个 changefeed 同步任务,请求成功会返回 200 OK。该返回结果表示服务器收到了执行命令指示,并不代表命令被成功执行。

请求 URI

DELETE /api/v2/changefeeds/{changefeed_id}

参数说明

路径参数

参数名说明
changefeed_id需要删除的同步任务 (changefeed) 的 ID

使用样例

以下请求会删除 ID 为 test1 的同步任务。

  1. curl -X DELETE http://127.0.0.1:8300/api/v2/changefeeds/test1

如果请求成功,则返回 200 OK。如果请求失败,则返回错误信息和错误码。

更新同步任务配置

该接口用于更新一个同步任务,请求成功会返回 200 OK。该返回结果表示服务器收到了执行命令指示,并不代表命令被成功执行。

修改 changefeed 配置需要按照暂停任务 -> 修改配置 -> 恢复任务的流程。

请求 URI

PUT /api/v2/changefeeds/{changefeed_id}

参数说明

路径参数

参数名说明
changefeed_id需要更新的同步任务 (changefeed) 的 ID

请求体参数

  1. {
  2. "replica_config": {
  3. "bdr_mode": true,
  4. "case_sensitive": true,
  5. "check_gc_safe_point": true,
  6. "consistent": {
  7. "flush_interval": 0,
  8. "level": "string",
  9. "max_log_size": 0,
  10. "storage": "string"
  11. },
  12. "enable_old_value": true,
  13. "enable_sync_point": true,
  14. "filter": {
  15. "do_dbs": [
  16. "string"
  17. ],
  18. "do_tables": [
  19. {
  20. "database_name": "string",
  21. "table_name": "string"
  22. }
  23. ],
  24. "event_filters": [
  25. {
  26. "ignore_delete_value_expr": "string",
  27. "ignore_event": [
  28. "string"
  29. ],
  30. "ignore_insert_value_expr": "string",
  31. "ignore_sql": [
  32. "string"
  33. ],
  34. "ignore_update_new_value_expr": "string",
  35. "ignore_update_old_value_expr": "string",
  36. "matcher": [
  37. "string"
  38. ]
  39. }
  40. ],
  41. "ignore_dbs": [
  42. "string"
  43. ],
  44. "ignore_tables": [
  45. {
  46. "database_name": "string",
  47. "table_name": "string"
  48. }
  49. ],
  50. "ignore_txn_start_ts": [
  51. 0
  52. ],
  53. "rules": [
  54. "string"
  55. ]
  56. },
  57. "force_replicate": true,
  58. "ignore_ineligible_table": true,
  59. "memory_quota": 0,
  60. "mounter": {
  61. "worker_num": 0
  62. },
  63. "sink": {
  64. "column_selectors": [
  65. {
  66. "columns": [
  67. "string"
  68. ],
  69. "matcher": [
  70. "string"
  71. ]
  72. }
  73. ],
  74. "csv": {
  75. "delimiter": "string",
  76. "include_commit_ts": true,
  77. "null": "string",
  78. "quote": "string"
  79. },
  80. "date_separator": "string",
  81. "dispatchers": [
  82. {
  83. "matcher": [
  84. "string"
  85. ],
  86. "partition": "string",
  87. "topic": "string"
  88. }
  89. ],
  90. "enable_partition_separator": true,
  91. "encoder_concurrency": 0,
  92. "protocol": "string",
  93. "schema_registry": "string",
  94. "terminator": "string",
  95. "transaction_atomicity": "string"
  96. },
  97. "sync_point_interval": "string",
  98. "sync_point_retention": "string"
  99. },
  100. "sink_uri": "string",
  101. "target_ts": 0
  102. }

目前仅支持通过 API 修改同步任务的如下配置。

参数名说明
target_tsUINT64 类型,指定 changefeed 的目标 TSO。(非必选)
sink_uriSTRING 类型,同步任务下游的地址。(非必选)
replica_configsink 的配置参数, 必须是完整的配置。(非必选)

以上参数含义与创建同步任务中的参数相同,此处不再赘述。

使用样例

以下请求会更新 ID 为 test1 的同步任务的 target_ts32

  1. curl -X PUT -H "'Content-type':'application/json'" http://127.0.0.1:8300/api/v2/changefeeds/test1 -d '{"target_ts":32}'

若是请求成功,则返回 200 OK,若请求失败,则返回错误信息和错误码。响应的 JSON 格式以及字段含义与创建同步任务中的响应参数相同,此处不再赘述。

查询同步任务列表

该接口是一个同步接口,请求成功会返回 TiCDC 集群中所有同步任务 (changefeed) 的基本信息。

请求 URI

GET /api/v2/changefeeds

参数说明

查询参数

参数名说明
state非必选,指定后将会只返回该状态的同步任务的信息

state 可选值为 allnormalstoppederrorfailedfinished

若不指定该参数,则默认返回处于 normalstoppedfailed 状态的同步任务基本信息。

使用样例

以下请求查询所有状态 (state) 为 normal 的同步任务的基本信息。

  1. curl -X GET http://127.0.0.1:8300/api/v2/changefeeds?state=normal
  1. {
  2. "total": 2,
  3. "items": [
  4. {
  5. "id": "test",
  6. "state": "normal",
  7. "checkpoint_tso": 439749918821711874,
  8. "checkpoint_time": "2023-02-27 23:46:52.888",
  9. "error": null
  10. },
  11. {
  12. "id": "test2",
  13. "state": "normal",
  14. "checkpoint_tso": 439749918821711874,
  15. "checkpoint_time": "2023-02-27 23:46:52.888",
  16. "error": null
  17. }
  18. ]
  19. }

以上返回的信息的说明如下:

  • id:同步任务的 ID。
  • state:同步任务当前所处的状态
  • checkpoint_tso:同步任务当前 checkpoint 的 TSO 表示。
  • checkpoint_time:同步任务当前 checkpoint 的格式化时间表示。
  • error:同步任务的错误信息。

查询特定同步任务

该接口是一个同步接口,请求成功会返回指定同步任务 (changefeed) 的详细信息。

请求 URI

GET /api/v2/changefeeds/{changefeed_id}

参数说明

路径参数

参数名说明
changefeed_id需要查询的同步任务 (changefeed) 的 ID

使用样例

以下请求会查询 ID 为 test1 的同步任务的详细信息。

  1. curl -X GET http://127.0.0.1:8300/api/v2/changefeeds/test1

响应的 JSON 格式以及字段含义与创建同步任务中的响应参数相同,此处不再赘述。

暂停同步任务

该接口暂停一个同步任务,请求成功会返回 200 OK。该返回结果表示服务器收到了执行命令指示,并不代表命令被成功执行。

请求 URI

POST /api/v2/changefeeds/{changefeed_id}/pause

参数说明

路径参数

参数名说明
changefeed_id需要暂停的同步任务 (changefeed) 的 ID

使用样例

以下请求会暂停 ID 为 test1 的同步任务。

  1. curl -X POST http://127.0.0.1:8300/api/v2/changefeeds/test1/pause

如果请求成功,则返回 200 OK。如果请求失败,则返回错误信息和错误码。

恢复同步任务

该接口恢复一个同步任务,请求成功会返回 200 OK。该返回结果表示服务器收到了执行命令指示,并不代表命令被成功执行。

请求 URI

POST /api/v2/changefeeds/{changefeed_id}/resume

参数说明

路径参数

参数名说明
changefeed_id需要恢复的同步任务 (changefeed) 的 ID

请求体参数

  1. {
  2. "overwrite_checkpoint_ts": 0
  3. }
参数名说明
overwrite_checkpoint_tsUINT64 类型,恢复同步任务 (changefeed) 时重新指定的 checkpoint TSO

使用样例

以下请求会恢复 ID 为 test1 的同步任务。

  1. curl -X POST http://127.0.0.1:8300/api/v2/changefeeds/test1/resume -d '{}'

如果请求成功,则返回 200 OK。如果请求失败,则返回错误信息和错误码。

查询同步子任务列表

该接口是一个同步接口,请求成功会返回当前 TiCDC 集群中的所有同步子任务 (processor) 的基本信息。

请求 URI

GET /api/v2/processors

使用样例

  1. curl -X GET http://127.0.0.1:8300/api/v2/processors
  1. {
  2. "total": 3,
  3. "items": [
  4. {
  5. "changefeed_id": "test2",
  6. "capture_id": "d2912e63-3349-447c-90ba-72a4e04b5e9e"
  7. },
  8. {
  9. "changefeed_id": "test1",
  10. "capture_id": "d2912e63-3349-447c-90ba-72a4e04b5e9e"
  11. },
  12. {
  13. "changefeed_id": "test",
  14. "capture_id": "d2912e63-3349-447c-90ba-72a4e04b5e9e"
  15. }
  16. ]
  17. }

以上返回的信息的说明如下:

  • changefeed_id:同步任务的 ID。
  • capture_idCapture 的 ID。

查询特定同步子任务

该接口是一个同步接口,请求成功会返回指定同步子任务 (processor) 的详细信息。

请求 URI

GET /api/v2/processors/{changefeed_id}/{capture_id}

参数说明

路径参数

参数名说明
changefeed_id需要查询的子任务的 Changefeed ID
capture_id需要查询的子任务的 Capture ID

使用样例

以下请求查询 changefeed_idtestcapture_id561c3784-77f0-4863-ad52-65a3436db6af 的同步子任务。一个同步子任务通过 changefeed_idcapture_id 来标识。

  1. curl -X GET http://127.0.0.1:8300/api/v2/processors/test/561c3784-77f0-4863-ad52-65a3436db6af
  1. {
  2. "table_ids": [
  3. 80
  4. ]
  5. }

以上返回的信息的说明如下:

  • table_ids:在这个 capture 上同步的 table 的 ID。

查询 TiCDC 服务进程列表

该接口是一个同步接口,请求成功会返回当前 TiCDC 集群中的所有服务进程 (capture) 的基本信息。

请求 URI

GET /api/v2/captures

使用样例

  1. curl -X GET http://127.0.0.1:8300/api/v2/captures
  1. {
  2. "total": 1,
  3. "items": [
  4. {
  5. "id": "d2912e63-3349-447c-90ba-72a4e04b5e9e",
  6. "is_owner": true,
  7. "address": "127.0.0.1:8300"
  8. }
  9. ]
  10. }

以上返回的信息的说明如下:

  • idcapture 的 ID。
  • is_owner:该 capture 是否是 owner 。
  • address:该 capture 的地址。

驱逐 owner 节点

该接口是一个异步的请求,请求成功会返回 200 OK。该返回结果表示服务器收到了执行命令指示,并不代表命令被成功执行。

请求 URI

POST /api/v2/owner/resign

使用样例

以下请求会驱逐 TiCDC 当前的 owner 节点,并会触发新一轮的选举,产生新的 owner 节点。

  1. curl -X POST http://127.0.0.1:8300/api/v2/owner/resign

如果请求成功,则返回 200 OK。如果请求失败,则返回错误信息和错误码。

动态调整 TiCDC Server 日志级别

该接口是一个同步接口,请求成功会返回 200 OK

请求 URI

POST /api/v2/log

请求参数

请求体参数

参数名说明
log_level想要设置的日志等级

log_level 支持 zap 提供的日志级别:”debug”、”info”、”warn”、”error”、”dpanic”、”panic”、”fatal”。

使用样例

  1. curl -X POST -H "'Content-type':'application/json'" http://127.0.0.1:8300/api/v2/log -d '{"log_level":"debug"}'

如果请求成功,则返回 200 OK。如果请求失败,则返回错误信息和错误码。