lightning并行导入结束的标识是什么

lightning并行导入并没有一个统一的管理端去协调各个lightning,那tidb如何知道一次导入已经结束了呢,假如一个lightning任务在其它lightning任务结束后发起,还能成功进行导入吗?普通导入会把tikv设置成导入模式并在校验后还原成普通模式,并行导入的时候这个状态又是怎么变化的呢。并行导入要求目标表为空表,那一个lightning导入完成后新发起的另外一个lightning操作的不就不是空表了吗,这是不是和空表的要求矛盾了呢?

提出的问题非常好,可以测试一下,我们也想知道结果,不过并行导入时应该是同时开始,如果一个完成,另外其它的没有完成,整体状态属于没有完成,会有一个开关控制

并行导入的意思是同时发起任务,你说的lightning任务在其它lightning任务结束后发起这个不算并行了

查看日志信息,有如下提示:
[INFO] [restore.go:442] [“the whole procedure completed”] [takeTime=108.167654ms]
表示整个导入过程已完成
[INFO] [main.go:106] [“tidb lightning exit”] [finished=true]
表示 TiDB Lightning 已退出

1 个赞

参考这个帖子:

1 个赞

在实际的操作中肯定存在先后关系的,我也是在官方的课程中看到了前一个lightning已经结束了,后面一个照常发起才会有这样的疑问的

这个信息应该是单个lightning进程看到的日志,但是对于整个并行导入来说并没有一个明确的标志

努力看了但还是不太理解,这个感觉更像是单个导入的日志。
官方文档上说 “在技术实现上,TiDB Lightning 通过在目标 TiDB 中记录各个实例以及每个导入表导入数据的元信息,协调不同实例的 Row ID 分配范围、全局 Checksum 的记录和 TiKV 及 PD 的配置变更与恢复。”,但是还是没看到更详细的说明

你并行导入的任务目标表都是一样的吗

目标表不一样的话就各管各的,目标表一样的场景不太理解

目标表一样的话为啥要开多个lightning一起导,没明白这是啥场景。
这么干的话,如果是local模式必然会失败,tidb模式会转换成replace,效率也没啥提升吧

https://docs.pingcap.com/zh/tidb/stable/tidb-lightning-distributed-import
对应示例一的场景

tidb lightning exit successfully

文档说的还算清晰,并行模式下lightning通过元数据管理在逻辑上把多个导入任务分开了,从这一层看每个lightning的目标端就是“空表”