【TiDB 4.0 PCTA学习笔记】3.6.1 Data migration tools introduction (TiDB 数据迁移工具介绍)@2班+陈墨

3.6.1 Data migration tools introduction (TiDB 数据迁移工具介绍)

Dumpling

Dumpling 是使用 go 开发的数据备份工具,Dumpling工具可以把存储在 TiDB/MySQL 中的数据导出为 SQL 或者 CSV 格式,可以用于完成逻辑上的全量备份或者导出。

相比于 Mydumper,Dumpling 有哪些改进之处?

  1. 支持导出多种数据形式,包括 SQL/CSV
  2. 支持全新的 table-filter,筛选数据更加方便
  3. 支持导出到 Amazon S3 云盘
  4. 针对 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 相关的数据迁移任务将无法进行。

参考文档: