数据迁移问题

为提高效率,提问时请尽量提供详细背景信息,问题描述清晰可优先响应。以下信息点请尽量提供:

  • 系统版本 & kernel 版本:
  • TiDB 版本:3.0.2
  • 磁盘型号:SSD
  • 集群节点分布:2tidb ,3tikv, 3pd
  • 数据量 & region 数量 & 副本数:
  • 集群 QPS、.999-Duration、读写比例:
  • 问题描述(我做了什么): 上游mysql实例中,有一个account库,这个库里面有3个表,各拆分了50张表,想把3个类型的分表,再分别合并到tidb中3个表中,发现合完的表,数据对不上呢 image

怎么确定数据对不上的?查看同步过程中日志有什么报错。

mysql 中的分表,单个表数据量是100万,将这50张表,合并到tidb中,才3万多,执行的时候没有任何报错

分表有主键吗?确认一下是不是在合并的时候,分表有主键或者唯一健冲突。

有主键 每个表有主键,看loader.log没有报错信息啊

对照着文档:https://pingcap.com/docs-cn/v3.0/reference/tools/data-migration/precheck/,对比下前置检查,特别是分表有主键的前置检查

使用的loader进行合表操作的,没看见有检测步骤啊,使用命令执行成功,查看日志,没有错误信息。表结构自增列是int类型,存在这种主键冲突,loader工具有解决方案吗

使用loader呀,官方里面有写loader,可以配置参数合表,配置好了。表是合到一张表,但是数据量不对,少太多了

我已经按照官方的配置了

看上去是 loader 过程,全量数据迁移过程,数据就没有成功完成,因为现在给的信息并不能定位出问题,所以建议可以考虑使用官方的 DM 工具,重新进行一下全量数据的迁移,另外,注意分表之间主键是否可能冲突,如果冲突,DM 可配置规避。

上游mysql实例中,有一个account库,这个库里面有3个表,各拆分了50张表,想把3个类型的分表,再分别合并到tidb中3个表中,这个全量数据只是测试的,没有增量的,按照官方配置的 image
下面这个是导入的命令“: ./tidb-enterprise-tools-latest-linux-amd64/bin/loader -c=config.toml -d ./wbcomic_account/

如果使用 loader 进行合库合表,必须考虑各个分片的数据有没有冲突,是否可以合并到一起而不会相互覆盖等问题。 目前 loader 自身没有严谨的合库合表方案,需要从业务侧来判断和制定一下是否可以使用 loader,以及怎么使用 loader

好的 好的 :handshake: 多谢