Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update tidb-lightning-faq.md from OnCALL #7197

Merged
merged 4 commits into from
Nov 18, 2021
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 10 additions & 8 deletions tidb-lightning/tidb-lightning-faq.md
Original file line number Diff line number Diff line change
Expand Up @@ -228,19 +228,21 @@ strict-format = true

## `checksum failed: checksum mismatched remote vs local`

**原因**:本地数据源跟目标数据库某个表的校验和不一致。这通常有更深层的原因
**原因**:本地数据源跟目标数据库某个表的校验和不一致。这通常有更深层的原因,可以通过检查日志中包含 `checksum mismatched` 的行进一步定位。

1. 这张表可能本身已有数据,影响最终结果。
2. 如果目标数据库的校验和全是 0,表示没有发生任何导入,有可能是集群太忙无法接收任何数据。
3. 如果数据源是由机器生成而不是从 Dumpling 备份的,需确保数据符合表的限制,例如:
包含 `checksum mismatched` 的行中有 `total_kvs: x vs y` 的信息,`x` 表示导入集群在完成导入后计算出的键值对(KV pairs)数目,`y` 表示本地数据源产生的键值对数目。

* 自增 (AUTO_INCREMENT) 的列需要为正数,不能为 0。
* 唯一键和主键 (UNIQUE and PRIMARY KEYs) 不能有重复的值。
4. 如果 TiDB Lightning 之前失败停机过,但没有正确重启,可能会因为数据不同步而出现校验和不一致。
- `x` 大,即导入集群键值对更多:
- 可能这张表在导入前已有数据,因此影响了数据校验。这也包括 TiDB Lightning 之前失败停机过,但没有正确重启。
- `y` 大,即本地数据源键值对更多:
- 如果目标数据库的校验和全是 0,表示没有发生任何导入,有可能是集群太忙无法接收任何数据。
- 可能导出数据中包含重复数据,例如唯一键和主键 (UNIQUE and PRIMARY KEYs) 有重复的值、下游表结构为大小写不敏感而数据为大小写敏感。
- 其他情况
- 如果数据源是由机器生成而不是从 Dumpling 备份的,需确保数据符合表的限制,例如自增 (AUTO_INCREMENT) 的列需要为正数,不能为 0。

**解决办法**:

1. 使用 `tidb-lightning-ctl` 把出错的表删除,然后重启 TiDB Lightning 重新导入那些表
1. 使用 `tidb-lightning-ctl` 把出错的表删除,检查表结构与数据,重启 TiDB Lightning 重新导入此前出错的表

{{< copyable "shell-regular" >}}

Expand Down