TiDB 数据迁移
数据迁移思路:先备份导出原数据库数据,再导入到新的 TiDB
使用 Dumpling 导出数据
https://docs.pingcap.com/zh/tidb/stable/dumpling-overview
#安装 Tiup
curl --proto '=https' --tlsv1.2 -sSf https://tiup-mirrors.pingcap.com/install.sh | sh
#安装 dumpling
tiup install dumpling
导出为 SQL 文件
本文假设在 127.0.0.1:4000 有一个 TiDB 实例,并且这个 TiDB 实例中有无密码的 root 用户。
Dumpling 默认导出数据格式为 SQL 文件。也可以通过设置 --filetype sql 导出数据到 SQL 文件:
tiup dumpling -u root -P 4000 -h 127.0.0.1 --filetype sql -t 8 -o /home/cl/ubuntu/export_sql_data -r 200000 -F256MiB --database xxxDatabase
以上命令中:
-h、-P、-u 分别代表地址、端口、用户。如果需要密码验证,可以使用 -p $YOUR_SECRET_PASSWORD 将密码传给 Dumpling。
-o(或 --output)用于选择存储导出文件的目录,支持本地文件的绝对路径或外部存储服务的 URI 格式。
-t 用于指定导出的线程数。增加线程数会增加 Dumpling 并发度提高导出速度,但也会加大数据库内存消耗,因此不宜设置过大。一般不超过 64。
-r 用于开启表内并发加速导出。默认值是 0,表示不开启。取值大于 0 表示开启,取值是 INT 类型。当数据源为 TiDB 时,设置 -r 参数大于 0 表示使用 TiDB region 信息划分区间,同时减少内存使用。具体取值不影响划分算法。对数据源为 MySQL 且表的主键是 INT 的场景,该参数也有表内并发效果。
-F 选项用于指定单个文件的最大大小,单位为 MiB,可接受类似 5GiB 或 8KB 的输入。如果你想使用 TiDB Lightning 将该文件加载到 TiDB 实例中,建议将 -F 选项的值保持在 256 MiB 或以下。
使用 Dumpling 导入数据
https://docs.pingcap.com/zh/tidb/stable/migrate-from-sql-files-to-tidb
#使用 TiUP 安装 TiDB Lightning
tiup install tidb-lightning
touch tidb-lightning.toml
nohup tiup tidb-lightning -config tidb-lightning.toml > nohup.out 2>&1 &
tail -f tidb-lightning.log
tidb-lightning.toml 文件:
[lightning]
level = "info"
file = "tidb-lightning.log"
[tikv-importer]
backend = "tidb"
[mydumper]
# 源数据目录
data-source-dir = "/home/cl/ubuntu/export_sql_data"
[tidb]
host = "192.168.2.36"
port = 4000
user = "root"
password = "u_92*AK13y5E-r^RG6"