TiDB Lightning 断点续传
本文主要介绍 TiDB Lightning 断点续传的启用与配置、断点的存储,以及断点续传的控制。
TiDB Lightning 支持两种存储方式:本地文件或 MySQL 数据库。
若
driver = "file"
,断点会存放在一个本地文件,其路径由dsn
参数指定。由于断点会频繁更新,建议将这个文件放到写入次数不受限制的盘上,例如 RAM disk。若
driver = "mysql"
,断点可以存放在任何兼容 MySQL 5.7 或以上的数据库中,包括 MariaDB 和 TiDB。在没有选择的情况下,默认会存在目标数据库里。
若 tidb-lightning
因不可恢复的错误而退出(例如数据出错),重启时不会使用断点,而是直接报错离开。为保证已导入的数据安全,这些错误必须先解决掉才能继续。使用 tidb-lightning-ctl
工具可以标示已经恢复。
tidb-lightning-ctl --checkpoint-error-destroy='`schema`.`table`'
该命令会让失败的表从头开始整个导入过程。选项中的架构和表名必须以反引号 (`
) 包裹,而且区分大小写。
如果导入
`schema`.`table`
这个表曾经出错,这条命令会:- 将断点重设到“未开始”的状态。
- 如果
`schema`.`table`
没有出错,则无操作。
传入 “all” 会对所有表进行上述操作。这是最方便、安全但保守的断点错误解决方法:
tidb-lightning-ctl --checkpoint-error-ignore='`schema`.`table`' &&
tidb-lightning-ctl --checkpoint-error-ignore=all
注意
除非确定错误可以忽略,否则不要使用这个选项。如果错误是真实的话,可能会导致数据不完全。启用校验和 (CHECKSUM) 可以防止数据出错被忽略。
无论是否有出错,把表的断点清除。
tidb-lightning-ctl --checkpoint-dump=output/directory