前置检查

从 TiDB 5.3.0 开始,TiDB Lightning 增加了前置检查功能,可以在执行迁移前检查配置。默认开启。该功能会自动进行一些磁盘空间和执行配置的常规检查,主要目的是确保后续的整个导入过程顺利。

下表介绍了各检查项和详细解释。

检查项支持版本解释
集群版本/状态是否正常>= 5.3.0检查配置中集群是否可以连接,当后端模式是 Local 的时候,还会检查 TiKV/PD/TiFlash 版本是否支持 Local 导入模式。
是否有权限读取数据>= 5.3.0检查当从云存储(Amazon S3)读取数据的时候,是否有对应的权限,确保不会因权限缺失导致导入中断。
导入空间是否足够>= 5.3.0检查 TiKV 集群是否有足够空间导入数据。检查时会对数据源进行采样,通过采样结果预估索引大小占比。由于估算中考虑了索引,因此可能会出现尽管数据源大小低于本地盘可用空间,但依然无法通过检测的情况。当后端是 Local 的时候,因为需要在本地进行外部排序,所以还会检查本地存储是否足够。
Region 分布状态>= 5.3.0检查 TiKV 集群的 Region 分布是否均匀,以及是否存在大量空 region,如果空 Region 的数量大于 max(1000, 表的数量 * 3),即大于 "1000" 和 "3 倍表数量"二者中的较大者,TiDB Lightning 无法执行导入。
数据文件是否有大 CSV 文件>= 5.3.0当备份文件中出现大于 10 GiB 的 CSV 文件且无法进行自动切分 (StrictFormat=false) 的时候,会导致导入性能下降。该检查的目的是提醒用户确保数据格式的情况下,开启自动切分 CSV 功能。
是否可以从断点恢复>= 5.3.0该检查是确保断点恢复过程中,不会出现对源文件和数据库中 schema 进行修改,导致导入错误数据的情况。
是否可以导入数据到已存在的数据表中>= 5.3.0当导入到已创建好的数据表中时,该检查尽可能的检查此次导入的源文件是否和已存在的数据表匹配。检查列数是否匹配,如果源文件存在列名,则检查列名是否匹配。当源文件存在缺省列,则检查缺省列在数据表中是否存在 Default Value,如果存在,则检查通过。
导入的目标表是否为空>= 5.3.1如果导入的目标表不为空,则 TiDB Lightning 会自动报错退出;如果开启了并行导入模式 (incremental-import = true),则会跳过此检查项。