将阿里云的tidb数据同步到本地tidb

将阿里云的tidb一张表的部分数据筛选之后同步到本地的tidb中,用什么方法好,哪位大佬可以告知一下,小白一枚,谢谢

  1. 如果是需要一次性筛选符合条件的数据导出然后导入,可以选择 mydumper -T {table_list} -w {where 条件} 然后再通过 loader 进行导入,另外如果是使用 v3.0.5 以上的版本,可以使用 lightning backend = tidb 的模式进行导入。
  2. 如果需要持续把数据变更的输出到下游的 TiDB 的话,建议可以通过 TiDB-binlog 输出到 kafka ,然后自己再实现消费段的逻辑来实现。TiDB-binlog 的介绍可以参考这里:https://pingcap.com/docs-cn/stable/reference/tidb-binlog/overview/#tidb-binlog-简介

阿里云的数据量比较多,有30亿,差不多筛选4亿左右的数据,版本现在应该是3.0.1,是不是用mydumper 比较好点,还有我想问下mydumper 是不是安装在tidb的中控机就行

Mydumper 不一定要安装在 TiDB 的中控机上,只要网络能够连通就可以了。另外要注意,在筛选的 4亿的数据的过程 -w 涉及的条件有没有走中索引(可以通过 explain 确定),以及导出的时候建议加上 -F 或者 -r 对备份的数据进行切分。还有建议避开业务高峰期操作。

好的,另外我想问下从30亿数据筛选4亿然后导出再导入本地的tidb,这个时间会不会很久,没有操作过,有点慌

导入速度受到多方面的因素影响,如:硬件的配置, 导入时使用的并发参数,导入时集群的负载等。这边可以参考一下 DM load 处理单元导入的时候的速度:
https://pingcap.com/docs-cn/stable/benchmark/dm-v1.0-ga/#在-load-处理单元使用不同-pool-size-的性能测试对比

问一下,是mydumper 好点呢还是TiDB-binlog 好点

TiDB-binlog 只会把开启 Binlog 后的数据变化输出到你所配置好的目标,存量的全量数据还是得用 Mydumper 来做备份。

我刚才用mydumper 试了一下少量数据的,导出的是一个.sql文件,如果是30亿的话,这个.sql文件能不能hold住

Mydumper 可以通过 -r 或者 -F 来对一个表进行并发的备份并且会生成多个 .sql 文件。具体可以看看 Mydumper 的官方文档。

导入的数据也不多,才几十万,就一直这样,数据少的就直接导进去了,这是什么原因。
loader语句:./bin/loader -h 192.168.141.10 -u root -p ‘879445’ -P 4000 -t 32 -d ./value

  1. 可以看下下游 TiDB 集群监控,看下集群负载高不高

  2. 查看下游 tidb.log 日志,确认 tidb server 正常工作

  3. 可以检查一下 loader 所在服务器 CPU 使用情况

  4. 因为日志打印的是 loader 的进度,请问 progress 是否会改变,还是 loader 一启动就是 1.67%,然后一直卡住不动

  5. 可以尝试将减少并发 -t 设置为 4 看是否可以导入

一启动就是1.67,很多时候是0.00,导3000条数据很快,导几十万就不行了,试了好几次都是这样,而且tidb卡住了,数据库也打不开,就跟死机了一样

可能是 tidb 负载太高

  1. 方便的话提供一下 tidb.log 日志
  2. 可以降低并发,调整 -t 为4 ,降低 tidb 的压力看下数据能否导入,不卡住 tidb


这是日志,我是在自己电脑的虚拟机运行的,测试用,到时候我们线上有30亿数据,会不会直接挂掉

从日志看是 tidb 连接 tikv 时没有响应,判断是并发写入量大导致 tikv 繁忙

  1. 可以 grep -i welcome tikv.log 确认一下 tikv 是否有重启的情况
  2. 可以降低并发,调整 -t 为4 ,降低 tidb 的压力看下数据能否导入,不卡住 tidb
  3. 线上环境导入数据,主要看服务器配置,如果服务器配置足够,那导入一般不会有问题

好的,谢谢啊,我自己的电脑配置不是很高,所以很卡,我一会修改并发试一下,有问题我及时请教

嗯嗯,有问题可以反馈给我们:rose:

换成4也不行,直接卡死机,退都退不出来,只能重启虚拟机,


这个是tikv的日志,导数据的那会没有这条日志