Mydumper数据迁移

使用mydumper备份mysql,并将chunk设置为64m大小,导入过程中报错

是用 Myloader 导入的吗?目标库是 TIDB 吗?TiDB的版本是多少?

使用mydumper备份的,chunk为64M,使用loader导入的,从mysql导入到tidb中,tidb是最新版本,目前网卡是千兆的,是不是还得需要将chunk大小设置更小一点

尝试把 myloader --queries-per-transaction参数设置小一点。

这个参数在哪里呢 ,在tidb中设置吗

myloader --help 能看到。

我是使用mydumper备份的,然后使用 loader导入数据的,这个和myloader一样吗?

不一样,那建议尝试将 mydumper 上通过调小–rows参数,将 chunk 更小一些

还是这个错误,已经将chunk设置16M,最大出口流量203M

tidb数据库报错image

mydumper -t 16有修改吗? -t 6 试试

1 个赞


是32

loader的 -t 参数可以根据 TiKV 的实例个数以及负载进行评估调整,例如 3个 TiKV 的场景,此值可以设为 3 *(1 ~ n) ;当 TiKV 负载过高,loader 以及 TiDB 日志中出现大量 backoffer.maxSleep 15000ms is exceeded 可以适当调小该值,当 TiKV 负载不是太高的时候,可以适当调大该值。

3 个赞

嗯嗯 配置的事3个tikv,现在修改为6,再执行:handshake: 多谢

调试了6,执行了一段时间,还是报错,


报错信息过去之后,现在又在接着执行

检查tidb,titv日志是否有报错,根据报错情况调整mydumper myloader的-t -F 等参数

1 个赞

mydumper备份的时候-F 大小是32M,loader -t 是3
tidb日志信息


tikv日志信息

能发一下你使用的 mydumper 和 loader 语句吗

/usr/bin/mydumper -h localhost -u root -p ‘xxx’ -P xx-S /tmp/mysql_xx.sock -t 16 -F 32 --regex ‘^(?!(mysql|test))’ --skip-tz-utc -o ./alldatabase

/data/tidb-enterprise-tools-latest-linux-amd64/bin/loader -h xx.xx.x.xxx -u root -p Man -P 4000 -checkpoint-schema=“tidb_loader” -t 3 -d ./alldatabase

[tidb@test1 bin]$ pwd
/home/tidb/tidb-tools/tidb-enterprise-tools-latest-linux-amd64/bin

# 备份 MySQL数据库
[tidb@test1 bin]$ ./mydumper -h MySQL数据库IP -u root -p 数据库密码 -P 3306 -t 16 -F 64 -x dev* --skip-tz-utc -o ./backup_mysql_0

# 恢复到TiDB
[tidb@test1 bin]$ ./loader -h TiDB数据库IP -u root -p 数据库密码 -P 4000 -t 32 -d ./backup_mysql_0/

我做全量备份的时候确实没有出现过你这样的问题,咱们的语句也没什么太多的差别;
你可以试一下先删除tidb_loader 库重新导入

我之前也是把tidb_loader删除了,还是不行,你们的环境是什么样子的,我们环境是千兆网卡,3个tikv独立几点,tidb2个节点 和pd混合, 16核 32G。按理来说不会有什么问题,但是我这边导入一直都是这个问题,今天是3天了,还是没有解决