-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
tools: update ticdc common maintenance (#2909)
Co-authored-by: TomShawn <1135243111@qq.com> Co-authored-by: TomShawn <41534398+TomShawn@users.noreply.github.com>
- Loading branch information
1 parent
84b9930
commit 57e4ab0
Showing
5 changed files
with
77 additions
and
12 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
--- | ||
title: 常见问题和故障处理 | ||
category: reference | ||
--- | ||
|
||
# 常见问题和故障处理 | ||
|
||
本文档总结了在使用 TiCDC 过程中经常遇到的问题,给出合适的运维方法。本文档还总结了常见的运行故障,并给出相对应的解决方案。 | ||
|
||
## 启动任务时如何选择 start-ts | ||
|
||
首先需要理解同步任务的 `start-ts` 对应于上游 TiDB 集群的一个 TSO,同步任务会从这个 TSO 开始请求数据。所以同步任务的 `start-ts` 需要满足以下两个条件: | ||
|
||
- `start-ts` 的值需要大于 TiDB 集群当前的 `tikv_gc_safe_point`,否则创建任务时会报错。 | ||
- 启动任务时,需要保证下游已经具有 `start-ts` 之前的所有数据。对于同步到消息队列等场景,如果不需要保证上下游数据的一致,可根据业务场景放宽此要求。 | ||
|
||
如果不指定 `start-ts` 或者指定 `start-ts=0`,在启动任务的时候会去 PD 获取一个当前 TSO,并从该 TSO 开始同步。 | ||
|
||
## 启动任务时提示部分表不能同步 | ||
|
||
在使用 `cdc cli changefeed create` 创建同步任务时会检查上游表是否符合[同步限制](/reference/tools/ticdc/overview.md#同步限制)。如果存在表不满足同步限制,会提示 `some tables are not eligible to replicate` 并列出这些不满足的表。用户选择 `Y` 或 `y` 则会继续创建同步任务,并且同步过程中自动忽略这些表的所有更新。用户选择其他输入,则不会创建同步任务。 | ||
|
||
## 同步中断的处理方法 | ||
|
||
目前已知可能发生的同步中断包括以下两类场景: | ||
|
||
- 下游持续异常,TiCDC 多次重试后仍然失败。 | ||
|
||
- 该场景下 TiCDC 会保存任务信息,由于 TiCDC 已经在 PD 中设置的 service GC safepoint,在 `gc-ttl` 的有效期内,同步任务 checkpoint 之后的数据不会被 TiKV GC 清理掉。 | ||
|
||
- 处理方法:用户可以在下游恢复正常后,通过 HTTP 接口恢复同步任务。 | ||
|
||
- 因下游存在不兼容的 SQL 语句,导致同步不能继续。 | ||
|
||
- 该场景下 TiCDC 会保存任务信息,由于 TiCDC 已经在 PD 中设置的 service GC safepoint,在 `gc-ttl` 的有效期内,同步任务 checkpoint 之后的数据不会被 TiKV GC 清理掉。 | ||
- 处理方法: | ||
1. 用户需先通过 `cdc cli changefeed query` 查询同步任务状态信息,记录 `checkpoint-ts` 值。 | ||
2. 使用新的任务配置文件,增加`ignore-txn-commit-ts` 参数跳过指定 `commit-ts` 对应的事务。 | ||
3. 通过 HTTP API 停止旧的同步任务,使用 `cdc cli changefeed create` ,指定新的任务配置文件,指定 `start-ts` 为刚才记录的 `checkpoint-ts`,启动新的同步任务恢复同步。 | ||
|
||
## `gc-ttl` 和文件排序 | ||
|
||
最新版本(v4.0.0-rc.1 之后)的 PD 支持外部服务设置服务级别 GC safepoint。任何一个服务可以注册更新自己服务的 GC safepoint。PD 会保证任何小于该 GC safepoint 的 KV 数据不会在 TiKV 中被 GC 清理掉。在 TiCDC 中启用了这一功能,用来保证 TiCDC 在不可用、或同步任务中断情况下,可以在 TiKV 内保留 TiCDC 需要消费的数据不被 GC 清理掉。 | ||
|
||
启动 CDC server 时可以通过 `gc-ttl` 指定 GC safepoint 的 TTL,这个值的含义是当 TiCDC 服务全部挂掉后,由 TiCDC 在 PD 所设置的 GC safepoint 保存的最长时间,该值默认为 86400 秒。 | ||
|
||
如果同步任务长时间中断,累积未消费的数据比较多,初始启动 TiCDC 可能会发生 OOM。这种情况下可以启用 TiCDC 提供的文件排序功能,该功能会使用文件系统文件进行排序。启用的方式是创建同步任务时在 `cdc cli` 内传入 `--sort-engine=file` 和 `--sort-dir=/path/to/sort_dir`,使用示例如下: | ||
|
||
{{< copyable "shell-regular" >}} | ||
|
||
```shell | ||
cdc cli changefeed create --pd=http://10.0.10.25:2379 --start-ts=415238226621235200 --sink-uri="mysql://root:123456@127.0.0.1:3306/" --sort-engine="file" --sort-dir="/data/cdc/sort" | ||
``` | ||
|
||
> **注意:** | ||
> | ||
> TiCDC(4.0 发布版本)还不支持动态修改文件排序和内存排序。 |