[粘贴]TiDB Lightning 断点续传
https://www.bookstack.cn/read/tidb-6.1-zh/tidb-lightning-tidb-lightning-checkpoints.md
大量的数据导入一般耗时数小时至数天,长时间运行的进程会有一定机率发生非正常中断。如果每次重启都从头开始,就会浪费掉之前已成功导入的数据。为此,TiDB Lightning 提供了“断点续传”的功能,即使 tidb-lightning 崩溃,在重启时仍然接着之前的进度继续工作。
本文主要介绍 TiDB Lightning 断点续传的启用与配置、断点的存储,以及断点续传的控制。
断点续传的启用与配置
[checkpoint]# 启用断点续传。# 导入时,TiDB Lightning 会记录当前进度。# 若 TiDB Lightning 或其他组件异常退出,在重启时可以避免重复再导入已完成的数据。enable = true# 存储断点的方式# - file:存放在本地文件系统(要求 v2.1.1 或以上)# - mysql:存放在兼容 MySQL 的数据库服务器driver = "file"# 存储断点的架构名称(数据库名称)# 仅在 driver = "mysql" 时生效# schema = "tidb_lightning_checkpoint"# 断点的存放位置## 若 driver = "file",此参数为断点信息存放的文件路径。# 如果不设置该参数则默认为 `/tmp/CHECKPOINT_SCHEMA.pb`## 若 driver = "mysql",此参数为数据库连接参数 (DSN),格式为“用户:密码@tcp(地址:端口)/”。# 默认会重用 [tidb] 设置目标数据库来存储断点。# 为避免加重目标集群的压力,建议另外使用一个兼容 MySQL 的数据库服务器。# dsn = "/tmp/tidb_lightning_checkpoint.pb"# 导入成功后是否保留断点。默认为删除。# 保留断点可用于调试,但有可能泄漏数据源的元数据。# keep-after-success = false
断点的存储
TiDB Lightning 支持两种存储方式:本地文件或 MySQL 数据库。
若
driver = "file",断点会存放在一个本地文件,其路径由dsn参数指定。由于断点会频繁更新,建议将这个文件放到写入次数不受限制的盘上,例如 RAM disk。若
driver = "mysql",断点可以存放在任何兼容 MySQL 5.7 或以上的数据库中,包括 MariaDB 和 TiDB。在没有选择的情况下,默认会存在目标数据库里。
目标数据库在导入期间会有大量的操作,若使用目标数据库来存储断点会加重其负担,甚至有可能造成通信超时丢失数据。因此,强烈建议另外部署一台兼容 MySQL 的临时数据库服务器。此数据库也可以安装在 tidb-lightning 的主机上。导入完毕后可以删除。
断点续传的控制
若 tidb-lightning 因不可恢复的错误而退出(例如数据出错),重启时不会使用断点,而是直接报错离开。为保证已导入的数据安全,这些错误必须先解决掉才能继续。使用 tidb-lightning-ctl 工具可以标示已经恢复。
--checkpoint-error-destroy
tidb-lightning-ctl --checkpoint-error-destroy='`schema`.`table`'
该命令会让失败的表从头开始整个导入过程。选项中的架构和表名必须以反引号 (` ) 包裹,而且区分大小写。
如果导入
`schema`.`table`这个表曾经出错,这条命令会:- 从目标数据库移除 (DROP) 这个表,清除已导入的数据。
- 将断点重设到“未开始”的状态。
如果
`schema`.`table`没有出错,则无操作。
传入 “all” 会对所有表进行上述操作。这是最方便、安全但保守的断点错误解决方法:
tidb-lightning-ctl --checkpoint-error-destroy=all
--checkpoint-error-ignore
tidb-lightning-ctl --checkpoint-error-ignore='`schema`.`table`' &&tidb-lightning-ctl --checkpoint-error-ignore=all
如果导入 `schema`.`table` 这个表曾经出错,这条命令会清除出错状态,如同没事发生过一样。传入 “all” 会对所有表进行上述操作。
注意:
除非确定错误可以忽略,否则不要使用这个选项。如果错误是真实的话,可能会导致数据不完全。启用校验和 (CHECKSUM) 可以防止数据出错被忽略。
--checkpoint-remove
tidb-lightning-ctl --checkpoint-remove='`schema`.`table`' &&tidb-lightning-ctl --checkpoint-remove=all
无论是否有出错,把表的断点清除。
--checkpoint-dump
tidb-lightning-ctl --checkpoint-dump=output/directory
将所有断点备份到传入的文件夹,主要用于技术支持。此选项仅于 driver = "mysql" 时有效。
[粘贴]TiDB Lightning 断点续传的更多相关文章
- 探索TiDB Lightning的源码来解决发现的bug
背景 上一篇<记一次简单的Oracle离线数据迁移至TiDB过程>说到在使用Lightning导入csv文件到TiDB的时候发现了一个bug,是这样一个过程. Oracle源库中表名都是大 ...
- TiDB Lightning导入超大型txt文件实践
背景 TiDB 提供了很多种数据迁移的方式,但这些工具/方案普遍对MySQL比较友好,一旦涉及到异构数据迁移,就不得不另寻出路,借助各种开源或商业的数据同步工具.其实数据在不同系统的流转当中,有一种格 ...
- 【TIDB】4、业界使用情况
一.小米 1.背景 小米关系型存储数据库首选 MySQL,单机 2.6T 磁盘.由于小米手机销量的快速上升和 MIUI 负一屏用户量的快速增加,导致负一屏快递业务数据的数据量增长非常快, 每天的读写量 ...
- 小试国产开源HTAP分布式NewSQL数据库TiDB-v5.3.0
概述 定义 TiDB官网 https://pingcap.com/zh/ 最新版本为5.3.0 TiDB GitHub源码 https://github.com/pingcap/tidb TiDB是由 ...
- 记一次简单的Oracle离线数据迁移至TiDB过程
背景 最近在支持一个从Oracle转TiDB的项目,为方便应用端兼容性测试需要把Oracle测试环境的库表结构和数据同步到TiDB中,由于数据量并不大,所以怎么方便怎么来,这里使用CSV导出导入的方式 ...
- wcf综合运用之:大文件异步断点续传
在WCF下作大文件的上传,首先想到使用的就是Stream,这也是微软推荐的使用方式.处理流程是:首先把文件加载到内存中,加载完毕后传递数据.这种处理方式对小文件,值得推荐,比如几K,几十k的图片文件, ...
- Web大文件(夹)上传(断点续传)控件-Xproer.HttpUploader6
版权所有 2009-2017荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...
- web大附件上传,支持断点续传
一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...
- java大附件上传,支持断点续传
一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...
- web之大文件断点续传
之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...
随机推荐
- flutter常用的音乐播放器库
audioplayers: 优势:audioplayers 是一个简单易用的音乐播放器库,支持主流平台(Android.iOS)并提供了丰富的功能,比如播放.暂停.快进.音量控制等. 缺点:audio ...
- Java 编辑PPT SmartArt图形
本文介绍在Java程序中如何来编辑PPT幻灯片中已有的SmartArt图形,包括重置图形样式.颜色.添加/删除图形节点.编辑节点内容.添加超链接到节点(链接到网页.链接到指定幻灯片)等.在PPT中创建 ...
- Java PDF书签——添加、编辑、删除、读取书签
概述 本文介绍通过Java程序来操作PDF书签,根据对书签的不同操作要求,分以下情况来介绍: 1. 添加书签(包括添加一级书签.多级子书签) 2. 编辑书签(包括重置书签标题.书签样式等) 3. 删除 ...
- 第十一部分_Shell脚本之正则表达式
正则表达式 1. 正则表达式是什么? 正则表达式(Regular Expression.regex或regexp,缩写为RE),也译为正规表示法.常规表示法,是一种字符模式,用于在查找过程中匹配指定的 ...
- tsconfig.json在配置文件中找不到任何输入,怎么办?
摘要:原来在我们创建tsconfig.json文件的时候,VSCode会自动检测当前项目当中是否有TS文件:如果没有的话,就会报这个错提示我们去创建一个文件,再去使用. 本文分享自华为云社区<t ...
- GaussDB(for Influx)与开源企业版性能对比
摘要:相比于企业版InfluxDB,GaussDB(for Influx)能为客户提供更高的写入能力.更稳定的查询能力.更高的数据压缩率,高效满足各大时序应用场景需求. 本文分享自华为云社区<华 ...
- 如何给网页和代码做HTML加密?
如何给网页和代码做HTML加密? 本篇文章给大家谈谈html混淆加密在线,以及HTML在线加密对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔. 如何给代码加密? 1.源代码加密软件推荐使 ...
- 如何打造企业专属 A/B 平台?火山引擎 DataTester 开放平台技术揭秘
更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 企业为什么需要开放平台 开放平台对于企业与业务来说,做到的不仅是能力的开放.生态的开放,与此同时还要能提供完善的业 ...
- 开放 LLM 排行榜: 深入研究 DROP
最近,开放 LLM 排行榜 迎来了 3 个新成员: Winogrande.GSM8k 以及 DROP,它们都使用了 EleutherAI Harness 的原始实现.一眼望去,我们就会发现 DROP ...
- STM32CubeMX教程15 ADC - 多重ADC转换
1.准备材料 开发板(正点原子stm32f407探索者开发板V2.4) STM32CubeMX软件(Version 6.10.0) keil µVision5 IDE(MDK-Arm) ST-LINK ...