使用 TiDB Lightning 从 Amazon Aurora MySQL 迁移全量数据
本文介绍如何使用 TiDB Lightning 从 Amazon Aurora MySQL 迁移全量数据到 TiDB。
第一步:从 Aurora 导出全量数据至 Amazon S3
请参考 AWS 官方文档:将数据库快照数据导出到 Amazon S3 将 Aurora 数据的快照导出到 Amazon S3。
第二步:部署 TiDB Lightning
具体的部署方法见 TiDB Lightning 部署。
第三步:配置 TiDB Lightning 的数据源
根据部署方式不同,按如下步骤编辑配置文件 tidb-lighting.toml
。
将配置文件中
[mydumper]
部分的data-source-dir
设置为第一步导出的 S3 Bucket 路径。[mydumper] # 数据源目录 data-source-dir = "s3://bucket-name/data-path"增加目标集群 TiDB 的配置。
[tidb] # 目标集群的信息。tidb-server 的地址,填一个即可 host = "172.16.31.1" port = 4000 user = "root" password = "" # 集群的 PD 地址 pd-addr = "127.0.0.1:2379"设置后端模式。
[tikv-importer] # 使用 Local-backend backend = "local" # 本地临时文件的存储路径。请确保对应的路径不存在或目录为空,并且所在的磁盘空间须大于待导入数据集的大小。 sorted-kv-dir = "/path/to/local-temp-dir"设置文件路由。
[mydumper] no-schema = true [[mydumper.files]] # 使用单引号字符串避免转义 pattern = '(?i)^(?:[^/]*/)*([a-z0-9_]+)\.([a-z0-9_]+)/(?:[^/]*/)*(?:[a-z0-9\-_.]+\.(parquet))$' schema = '$1' table = '$2' type = '$3'
其它配置参考 TiDB Lightning 配置。
第四步:创建表结构
由于从 Aurora 导出至 S3 的快照数据没有包含用于创建库表的 SQL 语句文件,所以需要手动将对应库表的建表语句导出并导入至 TiDB。可以使用 Dumpling + TiDB Lightning 的方式创建所有表结构:
使用 Dumpling 导出表结构文件:
./dumpling --host database-1.cedtft9htlae.us-west-2.rds.amazonaws.com --port 3306 --user root --password password --consistency none --no-data --output ./schema --filter "mydb.*"使用 TiDB Lightning 创建表结构
./tidb-lightning -config tidb-lightning.toml -d ./schema -no-schema=false此次启动 TiDB Lightning 只用于创建表结构,通常能迅速执行完以上命令。在常规速度下,每秒可以执行约 10 条建表语句。
第五步:开启 TiDB Lightning 进行数据导入
运行 TiDB Lightning。如果直接在命令行中用 nohup
启动程序,可能会因为 SIGHUP 信号而退出,建议把 nohup
放到脚本里面,如:
# !/bin/bash
export AWS_ACCESS_KEY_ID=${AccessKey}
export AWS_SECRET_ACCESS_KEY=${SecretKey}
nohup ./tidb-lightning -config tidb-lightning.toml > nohup.out &
导入开始后,可以采用以下两种方式查看进度:
- 通过
grep
日志关键字progress
查看进度,默认 5 分钟更新一次。 - 通过监控面板查看进度,具体参见 TiDB-Lightning 监控。