课程名称:课程版本(201)+ 2.3.3 Import Data to TiDB(将数据导入 TiDB)
学习时长:14分钟
课程收获:对数据导入的场景使用什么工具有了明确的认知,为数据迁移提供依据
课程内容:
1.TiDB的数据导入工具Lightning和Data Migration
2.Lightning工具的工作原理、使用场景以及特性
1)TiDB Lightning 整体工作原理如下:
1.在导数据之前,tidb-lightning 会自动将 TiKV 集群切换为“导入模式” (import mode),优化写入效率并停止自动压缩。
2.tidb-lightning 会在目标数据库建立架构和表,并获取其元数据。
3.每张表都会被分割为多个连续的区块,这样来自大表 (200 GB+) 的数据就可以用增量方式并行导入。
4.tidb-lightning 会为每一个区块准备一个“引擎文件 (engine file)”来处理键值对。tidb-lightning 会并发读取 SQL dump,将数据源转换成与 TiDB 相同编码的键值对,然后将这些键值对排序写入本地临时存储文件中。
5.当一个引擎文件数据写入完毕时,tidb-lightning 便开始对目标 TiKV 集群数据进行分裂和调度,然后导入数据到 TiKV 集群。
6.引擎文件包含两种:数据引擎与索引引擎,各自又对应两种键值对:行数据和次级索引。通常行数据在数据源里是完全有序的,而次级索引是无序的。因此,数据引擎文件在对应区块写入完成后会被立即上传,而所有的索引引擎文件只有在整张表所有区块编码完成后才会执行导入。
7.整张表相关联的所有引擎文件完成导入后,tidb-lightning 会对比本地数据源及下游集群的校验和 (checksum),确保导入的数据无损,然后让 TiDB 分析 (ANALYZE) 这些新增的数据,以优化日后的操作。同时,tidb-lightning 调整 AUTO_INCREMENT 值防止之后新增数据时发生冲突。
8.表的自增 ID 是通过行数的上界估计值得到的,与表的数据文件总大小成正比。因此,最后的自增 ID 通常比实际行数大得多。这属于正常现象,因为在 TiDB 中自增 ID 不一定是连续分配的。
9.在所有步骤完毕后,tidb-lightning 自动将 TiKV 切换回“普通模式” (normal mode),此后 TiDB 集群可以正常对外提供服务。
2)两个主要的使用场景:一是大量新数据的快速导入;二是全量备份数据的恢复
3)具有断点续传、表库过滤和CSV支持等特性
3.Data Migration工具的概念以及结构概述且具有高可用性
1)TiDB Data Migration (DM) 是一体化的数据迁移任务管理平台,支持从 MySQL 或 MariaDB 到 TiDB 的全量数据迁移和增量数据复制
2)DM 主要包括三个组件:DM-master,DM-worker 和 dmctl:
DM-master 负责管理和调度数据迁移任务的各项操作
DM-worker 负责执行具体的数据迁移任务
dmctl 是用来控制 DM 集群的命令行工具
学习过程中参考的其他资料
- [TiDB Lightning 简介]https://docs.pingcap.com/zh/tidb/stable/tidb-lightning-overview
- [Data Migration 简介]https://docs.pingcap.com/zh/tidb-data-migration/stable/overview