【TiDB 4.0 PCTA 学习笔记】- 3.6.2 Data migration from MySQL(如何将数据从 MySQL 迁移到 TiDB)@2班+董沛霖

课程名称:301 + 3.6.2 Data migration from MySQL(如何将数据从 MySQL 迁移到 TiDB)

学习时长:10min

课程收获:了解单机 Mysql 数据库如何进行数据迁移到 TiDB

课程内容:

Dumpling 的使用:

需要的权限

  • SELECT
  • RELOAD
  • LOCK TABLES
  • REPLICATION CLIENT

导出大规模数据时的 TiDB GC 设置

  • 如果导出的 TiDB 版本大于 v4.0.0,并且 Dumpling 可以访问 TiDB 集群的 PD 地址,Dumpling 会自动配置延长 GC 时间且不会对原集群造成影响。v4.0.0 之前的版本依然需要手动修改 GC。
  • 其他情况下,假如导出的数据量非常大,可以提前调长 GC 时间,以避免因为导出过程中发生 GC 导致导出失败:
    update mysql.tidb set VARIABLE_VALUE = '720h' where VARIABLE_NAME = 'tikv_gc_life_time';
  • 在操作结束之后,再将 GC 时间调回原样(默认是 10m ):
    update mysql.tidb set VARIABLE_VALUE = '10m' where VARIABLE_NAME = 'tikv_gc_life_time';
  • 最后,所有的导出数据都可以用 Lightning 导入回 TiDB。

Dumpling 主要选项表

主要选项 用途 默认值
-B 或 --database 导出指定数据库
-T 或 --tables-list 导出指定数据表
-f 或 --filter 导出能匹配模式的表,语法可参考 table-filter *.* (导出所有库表)
-h 或 --host 连接的数据库主机的地址 “127.0.0.1”
-t 或 --threads 备份并发线程数 4
-r 或 --rows 将 table 划分成 row 行数据,一般针对大表操作并发生成多个文件。
-F 或 --filesize 将 table 数据划分出来的文件大小,需指明单位(如 128B , 64KiB , 32MiB , 1.5GiB
–filetype 导出文件类型(csv/sql) “sql”
-o 或 --output 导出文件路径 “./export-${time}”
–where 对备份的数据表通过 where 条件指定范围
-p 或 --password 连接的数据库主机的密码
-P 或 --port 连接的数据库主机的端口 4000
-u 或 --user 连接的数据库主机的用户名 “root”

TiDB Lightning

使用 TiDB Ansible 部署 TiDB Lightning

TiDB Lightning 可随 TiDB 集群一起用 TiDB Ansible 部署

  1. 编辑 inventory.ini ,为 tidb-lightning 配置一个 IP。


[lightning_server]
192.168.20.10

  1. 修改 group_vars/all.yml 文件,忽略 tikv_importer_port 配置,并修改 conf/tidb-lighting.yml 文件中的backend 为 “tidb”。

tikv-importer:
    backend: "tidb"

  1. 开始部署。

ansible-playbook bootstrap.yml &&
ansible-playbook deploy.yml

  1. 修改 tidb-lightning.toml 文件中 [mydumper] 下的 data-source-dir

data-source-dir = “、data/export”

  1. 修改 tidb-lightning.toml 文件,加入目标 TiDB 集群配置信息

[tidb]
host = "172.16.31.1"
port = 4000
user = "root"
password = ""

  1. 运行 tidb-lightning 。如果直接在命令行中用 nohup 启动程序,可能会因为 SIGHUP 信号而退出,建议把 nohup 放到脚本里面,如:

#!/bin/bash
nohup ./tidb-lightning -config tidb-lightning.toml > nohup.out &

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

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

学习过程中参考的其他资料

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

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

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