[粘贴]TiDB Lightning 断点续传

粘贴,tidb,lightning,断点续传 · 浏览次数 : 6

小编点评

## TiDB Lightning 中的断点续传功能概述 **Introduction:** TiDB Lightning 提供了“断点续传”功能,即使数据库崩溃,依然能够从上次导入的位置继续导入数据。 **Enable断点续传:** * 使用 `enable = true` 参数启用断点续传。 * 设置 `checkpoint` 属性指定断点存储路径和格式。 **断点存储:** * 支持两种存储方式:本地文件和 MySQL 数据库。 * 在 `file` 模式中,断点会保存在本地文件中。 * 在 `mysql` 模式中,断点会保存在 MySQL 数据库中。 **断点控制:** * 在数据库崩溃时,断点续传不会使用断点,而是直接报错离开。 * 在恢复过程中,使用 `tidb-lightning-ctl` 工具标示已经恢复。 **断点重设:** * 可以手动重设断点到“未开始”状态。 * 使用 `--checkpoint-error-destroy` 命令可以从目标数据库中删除已经导入的数据。 **其他选项:** * 使用 `--checkpoint-remove` 命令可以移除断点。 * 使用 `--checkpoint-dump` 命令可以备份断点。 * 在 `mysql` 模式中,`--checkpoint-dump` 只适用于目标数据库。 **注意:** * 启用断点续传可能会消耗更多时间,因为它需要从头开始导入数据。 * 建议使用一个独立的数据库服务器来存储断点,以避免影响主服务器性能。

正文

https://www.bookstack.cn/read/tidb-6.1-zh/tidb-lightning-tidb-lightning-checkpoints.md

 

大量的数据导入一般耗时数小时至数天,长时间运行的进程会有一定机率发生非正常中断。如果每次重启都从头开始,就会浪费掉之前已成功导入的数据。为此,TiDB Lightning 提供了“断点续传”的功能,即使 tidb-lightning 崩溃,在重启时仍然接着之前的进度继续工作。

本文主要介绍 TiDB Lightning 断点续传的启用与配置、断点的存储,以及断点续传的控制。

断点续传的启用与配置

  1. [checkpoint]
  2. # 启用断点续传。
  3. # 导入时,TiDB Lightning 会记录当前进度。
  4. # 若 TiDB Lightning 或其他组件异常退出,在重启时可以避免重复再导入已完成的数据。
  5. enable = true
  6. # 存储断点的方式
  7. # - file:存放在本地文件系统(要求 v2.1.1 或以上)
  8. # - mysql:存放在兼容 MySQL 的数据库服务器
  9. driver = "file"
  10. # 存储断点的架构名称(数据库名称)
  11. # 仅在 driver = "mysql" 时生效
  12. # schema = "tidb_lightning_checkpoint"
  13. # 断点的存放位置
  14. #
  15. # 若 driver = "file",此参数为断点信息存放的文件路径。
  16. # 如果不设置该参数则默认为 `/tmp/CHECKPOINT_SCHEMA.pb`
  17. #
  18. # 若 driver = "mysql",此参数为数据库连接参数 (DSN),格式为“用户:密码@tcp(地址:端口)/”。
  19. # 默认会重用 [tidb] 设置目标数据库来存储断点。
  20. # 为避免加重目标集群的压力,建议另外使用一个兼容 MySQL 的数据库服务器。
  21. # dsn = "/tmp/tidb_lightning_checkpoint.pb"
  22. # 导入成功后是否保留断点。默认为删除。
  23. # 保留断点可用于调试,但有可能泄漏数据源的元数据。
  24. # 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

  1. tidb-lightning-ctl --checkpoint-error-destroy='`schema`.`table`'

该命令会让失败的表从头开始整个导入过程。选项中的架构和表名必须以反引号 () 包裹,而且区分大小写。

  • 如果导入 `schema`.`table`  这个表曾经出错,这条命令会:

    1. 从目标数据库移除 (DROP) 这个表,清除已导入的数据。
    2. 将断点重设到“未开始”的状态。
  • 如果 `schema`.`table`  没有出错,则无操作。

传入 “all” 会对所有表进行上述操作。这是最方便、安全但保守的断点错误解决方法:

  1. tidb-lightning-ctl --checkpoint-error-destroy=all

--checkpoint-error-ignore

  1. tidb-lightning-ctl --checkpoint-error-ignore='`schema`.`table`' &&
  2. tidb-lightning-ctl --checkpoint-error-ignore=all

如果导入 `schema`.`table`  这个表曾经出错,这条命令会清除出错状态,如同没事发生过一样。传入 “all” 会对所有表进行上述操作。

注意:

除非确定错误可以忽略,否则不要使用这个选项。如果错误是真实的话,可能会导致数据不完全。启用校验和 (CHECKSUM) 可以防止数据出错被忽略。

--checkpoint-remove

  1. tidb-lightning-ctl --checkpoint-remove='`schema`.`table`' &&
  2. tidb-lightning-ctl --checkpoint-remove=all

无论是否有出错,把表的断点清除。

--checkpoint-dump

  1. tidb-lightning-ctl --checkpoint-dump=output/directory

将所有断点备份到传入的文件夹,主要用于技术支持。此选项仅于 driver = "mysql" 时有效。

与[粘贴]TiDB Lightning 断点续传相似的内容:

[粘贴]TiDB Lightning 断点续传

https://www.bookstack.cn/read/tidb-6.1-zh/tidb-lightning-tidb-lightning-checkpoints.md 大量的数据导入一般耗时数小时至数天,长时间运行的进程会有一定机率发生非正常中断。如果每次重启都从头开始,就会浪费掉之前已成功导

[粘贴]TiFlash

TiFlash 是 TiDB HTAP 形态的关键组件,它是 TiKV 的列存扩展,在提供了良好的隔离性的同时,也兼顾了强一致性。列存副本通过 Raft Learner 协议异步复制,但是在读取的时候通过 Raft 校对索引配合 MVCC 的方式获得 Snapshot Isolation 的一致性隔

[粘贴]使用 Dumpling 导出数据

https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#dumpling-%E4%B8%BB%E8%A6%81%E9%80%89%E9%A1%B9%E8%A1%A8 使用数据导出工具 Dumpling,你可以把存储在 TiDB 或 MySQ

[粘贴]github-redis-rdb-cli

redis-rdb-cli A tool that can parse, filter, split, merge rdb and analyze memory usage offline. It can also sync 2 redis data and allow user define th

vim配置的学习与总结

摘要 有时候在linux里面操作需要使用粘贴以及其他处理. 很多发行版, 遇到 # 会自动退格, 很难受. 想着能够处理一下vim的默认设置可以好很多. 所以这里简单总结一下. 配置文件 vim的配置文件有两处 全局的是: /etc/vimrc 分用户的是: ~/.vimrc 两个都可以进行设置 但

后疫情办公时代——你需要的多人同步协同编辑Demo(可粘贴可撤销)

本文由葡萄城技术团队于博客园原创并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具、解决方案和服务,赋能开发者。 新冠病毒的疫情使得在线办公成为了一个常态,这使得在线文档成为了时下的热点。其中在线协同表格是在线文档的重要一个组成部分,纯前端表格在在线协同表格上有着得天独厚的优势:本

前端文件上传的几种交互造轮子

前端文件上传本来是一个常规交互操作,没什么特殊性可言,但是最近在做文件上传,需要实现截图粘贴上传,去找了下有没有什么好用的组件,网上提供的方法有,但是没找完整的组件来支持cv上传,经过了解发现可以用剪贴板功能让自己的cv实现文件上传,于是自己就整合了目前几种文件上传的交互方式,码了一个支持cv的vue3文件上传组件(造个轮子)。

LlamaFS自组织文件管理器

LlamaFS是一个自组织文件管理器。它可以基于文件内容和修改时间等属性自动重命名和组织您的文件。它能让你不把时间花在对文件的复制、粘贴、重命名、拷贝、排序等简单操作上。有幸在Github上看到LlamaFS这个repo,感慨万千。 技术简介 LlamaFS以批处理模式和监视模式两种模式运行。在批处

一键自动化博客发布工具,用过的人都说好(简书篇)

好不容易写好了一篇博客,现在想要把它发布到各个平台上供大家一起欣赏? 然后一个网站一个网站打开要发布的博客站点,手动点创建文章,然后拷贝粘贴写的markdown文件。 甚至有些网站还不支持markdown格式,你还需要对格式进行转换。 每次重复这样的机械化工作,完全就是浪费生命。 现在不需要了,给大

【Qt 6】读写剪贴板

剪贴板是个啥就不用多介绍了,最直观的功能是实现应用程序之间数据共享。就是咱们常说的“复制”、“粘贴”功能。 在 Qt 中,QClipboard 类提供了相关 API 让应用程序具备读/写剪贴板的能力。数据通过 QMimeData 类包装。该类使用 MIME 类型来标识数据。比如,要包装的数据是纯文本