将大数据导入到Tidb中的坑

参照官网将采用docker-compose.yml方式搭建好测试环境的TiDB,

参考链接:https://www.pingcap.com/docs-cn/op-guide/docker-compose/

下一步将数据导入,

因为数据量较大,导入的时候报错:

将大数据导入到Tidb中的坑_第1张图片

百度查找解决方案,为该参数默认配置为5000条,

参考链接:https://github.com/pingcap/tidb/issues/6042

https://pingcap.com/docs-cn/op-guide/tidb-config-file/

stmt-count-limit

  • TiDB 一个事务允许的最大语句条数限制。
  • 默认: 5000
  • 在一个事务中,超过 stmt-count-limit 条语句后还没有 rollback 或者 commit,TiDB 将会返回 statement count 5001 exceeds the transaction limitation, autocommit = false 错误。

需要修改Tidb-server的配置文件,进入容器查看,为根目录下,

将大数据导入到Tidb中的坑_第2张图片

但该文件权限无法修改,使用chmod报错:read-only file system

检查docker-compose.yml文件,为该文件是映射出来,将物理服务器上的文件进行修改,将stmt-count-limit修改为50000000,将Tidb-server服务重启后,配置正常修改了

  • 选择增大 tidb 的单个事物语句数量限制,不过这个会导致内存上涨。

将大数据导入到Tidb中的坑_第3张图片

再次导入数据,仍然报错:

将大数据导入到Tidb中的坑_第4张图片

查找问题原因,需要修改Tidb配置,让其自动分片导入

将大数据导入到Tidb中的坑_第5张图片

参考链接:

https://pingcap.com/docs-cn/sql/tidb-specific/#tidb-%E4%B8%93%E7%94%A8%E7%B3%BB%E7%BB%9F%E5%8F%98%E9%87%8F%E5%92%8C%E8%AF%AD%E6%B3%95

https://blog.csdn.net/vkingnew/article/details/82789190

修改配置后重新导入,仍存在问题,尝试将tidb服务重启

将大数据导入到Tidb中的坑_第6张图片

mysql> set @@session.tidb_batch_insert=1;
Query OK, 0 rows affected (0.00 sec)

 

查询原因,为该变量仅在当前连接中生效,后连接到mysql上,使用source进行导入

 

导入1.3G文件,用了12小时,后查询官方网站,有现成工具:Loader

https://pingcap.com/docs-cn/tools/loader/

使用该工具进行导入。

*教训:看官方文档说明   0.0

你可能感兴趣的:(Tidb,mysql)