Lightning 的 TiDB 模式 为什么不允许 Checksum 和 Analyze?

【 TiDB 使用环境`】测试环境
【 TiDB 版本】5.0 - > 5.4
【遇到的问题】
在使用 Lightning 的 TiDB 模式时,Checksum 和 Analyze 即使设置了 true 也会跳过。
Lightning 文档:https://docs.pingcap.com/zh/tidb/stable/tidb-lightning-configuration#tidb-lightning-任务配置
【问题现象及影响】
在使用 Lightning 的 TiDB 模式,无论怎么设置 Checksum 和 Analyze 的值,最后在导入的时候会发现,都是失败的(没有任何提示)。

排查了很久后,在源码里面找到了答案:


但是只有在 log 级别为 Debug 的时候会出现该提示,skip checksum & analyze, not supported by this backend.

所以最后问一下,为什么在 TiDB 模式下,不支持 Checksum 和 Analyze?

4 个赞

在文档并未找到有关这方面的描述,我觉着需要补全一下

4 个赞

没有 checksum 原因是: 下游数据库不一定是空表,所以 checksum 本身没有必要。
没有 analyze 原因是: TiDB 模式会触发 TiDB 本身的自动 analyze 无需手动操作

3 个赞

是的,在代码日志中,和文档都应该补全一下,排查了一中午,这个问题。

3 个赞

发到这里来

文档新增需求

如果这是个 文档新增需求 ,请按照下方模板提交,以便于我们更快了解到你的需求,进行优化:

  • 需求类型:新增文档
  • 需求背景:比如缺少哪部分文档,对使用有什么影响
  • 期望增加哪些组件或者功能的文档,加到现有文档的哪个位置
3 个赞

我都准备自己去提PR了:smirk:。既然这样的话,我还是去发个帖子吧

1 个赞

hhhhhhh~

全栈大佬就是厉害~

你来选,哪个对你来说实现成本比较低你就搞那个~
发到论坛我就会搬到内网让老师们评估一下~

看你方便~

1 个赞

Lightning 文档对 tidb 模式下强行跳过 checksum 与 analyze 缺少描述。 - 建议&反馈 / 文档优化 - TiDB 的问答社区 (asktug.com)

已经发了!

因为 tidb 模式没法通过 checksum 校验,它可以通过 linghtning checkpoint 来保证。

checksum 是对 kv [key, value] 计算所得, 通过 keys 数量、大小、checkSum 值来校验。

例如 local 模式,kv 键值对是在 linghtning 编码好的,所以能轻松的校验本地编码好的 kv checksum 值,导入完成后再调用 tikv 计算 checksum,两方对比完整校验过程

但是对于 tidb 模式,由于键值对是在 tidb server 编码的,所以没办法获取本地的 checksum 值,也就没法完成校验。,

4 个赞

tidb-backend 主要是通过写 SQL 语句来导入的(应该不算是在 tidb server 编码吧,印象中 tidb-backend 有自己的 tidbEncoder,会把读出来的数据变成 SQL 语句。)

1 个赞

是通过sql写入的,tidb server 执行 sql 就是编码为 kv 键值对,然后写进 tikv,所以这里说 tidb server 进行编码为 kv。

1 个赞

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。