【TiDB 4.0 PCTA学习笔记】3.6TIDB数据迁移

课程名称:301 + TIDB数据迁移

学习时长:30

课程收获:

  • TIDB数据迁移
  • 从MySQL迁移数据到TIDB
  • 如何将数据从 Aurora 迁移到 TiDB
  • 将数据从 Oracle 迁移到 TiDB

课程内容:

TIDB数据迁移

dumpling 逻辑的数据导出,

  • 支持TIDB和mysql
  • 支持SQL和CSV,
  • 支持table-filter 支持单条sql的内存限制
  • 支持V4.0以上版本,
  • 支持自动调整GC时间
  • 支持导出时间

lighting 全量数据高速导入Tidb 支持mydump和csv 数据源,

  • 支持自动开启导入模式,大表并行导入,
  • 使用KV导入,通过TIKV importer导入。
  • 校验本地数据源和下流导入文件,
  • 自动调整自增ID,通过表数据估算,可能导致自增ID高于总的数据量

TIDB DM
统一数据导入管控平台

从MySQL迁移数据到TIDB

mysql -> dumping -> lighting -> TiDB

dumping:

lighting:

  • TIDB backend 模式,导入过程提供对外服务,导入效率更低
  • TIKV importer 模式,导入过程中TIKV不提供对外服务,但是导入效率更高

如何将数据从 Aurora 迁移到 TiDB

通过DM实现,增量导出过程中,DM依赖ROW格式binlog,如不满足会报错



Aurora

  • 有些Aurora版本不支持binlog,需要检查版本
  • DM依赖ROW格式binlog,如不满足会报错
  • 上下游数据库实例,用户相关权限需要单独配置
  • 上游数据库和TIDB表兼容性需要额外检查,外键索引等
  • 上游分库分表一致性检查,包括唯一性

将数据从 Oracle 迁移到 TiDB

通过OGG(Oracle GoldenGate)实现


参考 https://book.tidb.io/session4/chapter5/from-oracle-to-tidb.html

####重点关注
同步过程说明

2.1. 表结构转换

由于 Oracle 中表数据类型与 TiDB 分布式数据库中数据类型不一致,需要预先进行表结构的转换(可以使用 Navicat 工具)。

2.2. 初始化同步

初始化数据通过 OGG initial load 进程将 Oracle 数据导入到 TiDB 分布式数据库中,如此时 Oracle 数据库中仍然有写入操作,则 initial load 开始时间之后的数据变化无法同步,此时需要进行增量的数据同步,且在同步多张表时,每个表同步的时间并不一致。如采用停机同步(同步期间 Oracle 中表数据不再变化),仅需要进行初始化同步操作。

2.3. 增量数据同步

在初始化同步的基础上进行后续变化的数据同步,需要在初始化同步之前,先开启日志抽取。由于异构平台,无法基于统一时间点完成数据初始导入操作,所以在完成初始化导入操作之后需要完整应用开始 initial load 同步之后的所有 log,此时会存在重复执行的问题,OGG 中通过 handlecolisions 参数处理冲突的场景,保证最终数据的一致性(根据主键或唯一键进行重复的操作可以保证最终数据一致,在缺少主键的场景可能会导致数据重复)。

OGG :


学习过程中遇到的问题或延伸思考:

  • 问题 1:
  • 问题 2:
  • 延伸思考 1:
  • 延伸思考 2:

同学你好,感谢参与 TiDB 4.0 课程的学习!

本篇笔记逻辑清晰、内容丰富,被评选为优质笔记,将额外获得 20 积分,并在 「TiDB 培训」分类下获得“置顶”权益,积分兑换规则将于近期开放,敬请关注!

期待您继续产出优质内容!