3.6.1 Data migration tools introduction (TiDB 数据迁移工具介绍)
Dumpling
Dumpling
是使用 go 开发的数据备份工具,Dumpling工具可以把存储在 TiDB/MySQL 中的数据导出为 SQL 或者 CSV 格式,可以用于完成逻辑上的全量备份或者导出。
相比于 Mydumper,Dumpling 有哪些改进之处?
- 支持导出多种数据形式,包括 SQL/CSV
- 支持全新的 table-filter,筛选数据更加方便
- 支持导出到 Amazon S3 云盘
- 针对 TiDB 进行了更多优化:
- 支持配置 TiDB 单条 SQL 内存限制
- 针对 TiDB v4.0.0 以上版本支持自动调整 TiDB GC 时间
- 使用 TiDB 的隐藏列
_tidb_rowid
优化了单表内数据的并发导出性能 - 对于 TiDB 可以设置 tidb_snapshot 的值指定备份数据的时间点,从而保证备份的一致性,而不是通过
FLUSH TABLES WITH READ LOCK
来保证备份一致性。
TiDB Lightning 简介:
TiDB Lightning 是一个将全量数据高速导入到 TiDB 集群的工具
TiDB Lightning 有以下两个主要的使用场景:一是大量新数据的快速导入;二是全量备份数据的恢复。目前,Lightning 支持 Dumpling 或 CSV 输出格式的数据源。你可以在以下两种场景下使用 Lightning:
- 迅速 导入 大量新 数据。
- 恢复所有备份数据。
架构
DM 2.0
TiDB Data Migration](GitHub - pingcap/dm: Data Migration Platform) (DM) 是一体化的数据迁移任务管理平台,支持从 MySQL 或 MariaDB 到 TiDB 的全量数据迁移和增量数据复制。使用 DM 工具有利于简化错误处理流程,降低运维成本。
DM 2.0 相比于 1.0,主要有以下改进:
- 数据迁移任务的高可用,部分 DM-master、DM-worker 节点异常后仍能保证数据迁移任务的正常运行。
- 乐观协调模式下的 sharding DDL 可以在部分场景下减少 sharding DDL 同步过程中的延迟、支持上游数据库灰度变更等场景。
- 更好的易用性,包括新的错误处理机制及更清晰易读的错误信息与错误处理建议。
- 与上下游数据库及 DM 各组件间连接的 TLS 支持。
- 实验性地支持从 MySQL 8.0 迁移数据。
DM 2.0的架构
DM-master
DM-master 负责管理和调度数据迁移任务的各项操作。
- 保存 DM 集群的拓扑信息
- 监控 DM-worker 进程的运行状态
- 监控数据迁移任务的运行状态
- 提供数据迁移任务管理的统一入口
- 协调分库分表场景下各个实例分表的 DDL 迁移
DM-worker
DM-worker 负责执行具体的数据迁移任务。
- 将 binlog 数据持久化保存在本地
- 保存数据迁移子任务的配置信息
- 编排数据迁移子任务的运行
- 监控数据迁移子任务的运行状态
有关于 DM-worker 的更多介绍,详见 DM-worker 简介。
dmctl
dmctl 是用来控制 DM 集群的命令行工具。
- 创建、更新或删除数据迁移任务
- 查看数据迁移任务状态
- 处理数据迁移任务错误
- 校验数据迁移任务配置的正确性
高可用
当部署多个 DM-master 节点时,所有 DM-master 节点将使用内部嵌入的 etcd 组成集群。该 DM-master 集群用于存储集群节点信息、任务配置等元数据,同时通过 etcd 选举出 leader 节点。该 leader 节点用于提供集群管理、数据迁移任务管理相关的各类服务。因此,若可用的 DM-master 节点数超过部署节点的半数,即可正常提供服务。
当部署的 DM-worker 节点数超过上游 MySQL/MariaDB 节点数时,超出上游节点数的相关 DM-worker 节点默认将处于空闲状态。若某个 DM-worker 节点下线或与 DM-master leader 发生网络隔离,DM-master 能自动将与原 DM-worker 节点相关的数据迁移任务调度到其他空闲的 DM-worker 节点上(若原 DM-worker 节点为网络隔离状态,则其会自动停止相关的数据迁移任务);若无空闲的 DM-worker 节点可供调度,则原 DM-worker 相关的数据迁移任务将无法进行。