dumpling导出表时缺少数据 【已经解决】

【TiDB 使用环境】测试
【TiDB 版本】6.5.3
【操作系统】CentOS Linux release 7.6.1810 (Core)
【部署方式】VMWARE虚拟机中,HDD磁盘
【集群数据量】1张表有1千万行
【集群节点数】3

导出命令:
tiup dumpling -u root -p xxxx -P 4000 -h 127.0.0.1 -r 20000 -F9999MiB
–filetype sql
-o ./dumpling_output
–filter ‘hdy_user.auth_user_warehouse_menu’
–threads 16

通过这种方式导出的数据文件:
[root@nd97 dumpling_output]# ls
hdy_user.auth_user_warehouse_menu.0000000010000.sql hdy_user.auth_user_warehouse_menu.0000000140000.sql
hdy_user.auth_user_warehouse_menu.0000000020000.sql hdy_user.auth_user_warehouse_menu.0000000150000.sql
hdy_user.auth_user_warehouse_menu.0000000030000.sql hdy_user.auth_user_warehouse_menu.0000000160000.sql
hdy_user.auth_user_warehouse_menu.0000000040000.sql hdy_user.auth_user_warehouse_menu.0000000170000.sql
hdy_user.auth_user_warehouse_menu.0000000050000.sql hdy_user.auth_user_warehouse_menu.0000000180000.sql
hdy_user.auth_user_warehouse_menu.0000000060000.sql hdy_user.auth_user_warehouse_menu.0000000190000.sql
hdy_user.auth_user_warehouse_menu.0000000070000.sql hdy_user.auth_user_warehouse_menu.0000000200000.sql
hdy_user.auth_user_warehouse_menu.0000000080000.sql hdy_user.auth_user_warehouse_menu.0000000210000.sql
hdy_user.auth_user_warehouse_menu.0000000090000.sql hdy_user.auth_user_warehouse_menu.0000000220000.sql
hdy_user.auth_user_warehouse_menu.0000000100000.sql hdy_user.auth_user_warehouse_menu.0000000230000.sql
hdy_user.auth_user_warehouse_menu.0000000110000.sql hdy_user.auth_user_warehouse_menu-schema.sql
hdy_user.auth_user_warehouse_menu.0000000120000.sql hdy_user-schema-create.sql
hdy_user.auth_user_warehouse_menu.0000000130000.sql metadata
[root@nd97 dumpling_output]#
[root@nd97 dumpling_output]# ls -1
dumpling.log
hdy_user.auth_user_warehouse_menu.0000000010000.sql
hdy_user.auth_user_warehouse_menu.0000000020000.sql
hdy_user.auth_user_warehouse_menu.0000000030000.sql
hdy_user.auth_user_warehouse_menu.0000000040000.sql
hdy_user.auth_user_warehouse_menu.0000000050000.sql
hdy_user.auth_user_warehouse_menu.0000000060000.sql
hdy_user.auth_user_warehouse_menu.0000000070000.sql
hdy_user.auth_user_warehouse_menu.0000000080000.sql
hdy_user.auth_user_warehouse_menu.0000000090000.sql
hdy_user.auth_user_warehouse_menu.0000000100000.sql
hdy_user.auth_user_warehouse_menu.0000000110000.sql
hdy_user.auth_user_warehouse_menu.0000000120000.sql
hdy_user.auth_user_warehouse_menu.0000000130000.sql
hdy_user.auth_user_warehouse_menu.0000000140000.sql
hdy_user.auth_user_warehouse_menu.0000000150000.sql
hdy_user.auth_user_warehouse_menu.0000000160000.sql
hdy_user.auth_user_warehouse_menu.0000000170000.sql
hdy_user.auth_user_warehouse_menu.0000000180000.sql
hdy_user.auth_user_warehouse_menu.0000000190000.sql
hdy_user.auth_user_warehouse_menu.0000000200000.sql
hdy_user.auth_user_warehouse_menu.0000000210000.sql
hdy_user.auth_user_warehouse_menu.0000000220000.sql
hdy_user.auth_user_warehouse_menu.0000000230000.sql
hdy_user.auth_user_warehouse_menu-schema.sql
hdy_user-schema-create.sql
metadata
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000010000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000020000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000030000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000040000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000050000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000060000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000070000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000080000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000090000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000100000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000110000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000120000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000130000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000140000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000150000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000160000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000170000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000180000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000190000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000200000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000210000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000220000.sql |wc -l
5003
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000230000.sql |wc -l
5003
[root@nd97 dumpling_output]#
查看其中一个文件的内容:
[root@nd97 dumpling_output]# more hdy_user.auth_user_warehouse_menu.0000000230000.sql
/!40014 SET FOREIGN_KEY_CHECKS=0/;
/!40101 SET NAMES binary/;
INSERT INTO auth_user_warehouse_menu VALUES
(1681484146138509314,833708539842138112,741,‘0’),
(1681484146138509314,575333448487538688,741,‘0’),
,每个文件5003行,文件前3行不是数据,后面是5000行数据,加起来正好5003行。

然后导入到其他MYSQL数据库环境后:
mysql> select count() from hdy_user.auth_user_warehouse_menu;
±---------+
| count(
) |
±---------+
| 115000 |
±---------+
1 row in set (0.02 sec)

mysql>
导入后表行数是115000行,正好对应上面的导出文件,一共23个导出文件,每个文件5000行,正好115000行。实际在TIDB中该表有10464560行。
为啥导出数据时导出不全????

还有些表,只导出一个文件,只导出了5000行,不知道为什么。
我用MYSQLDUMP导出TIDB的数据表的时候也遇到这样的问题。

dumpling日志如下:
[root@nd97 dumpling_output]# cat dumpling.log
[2025/07/21 09:06:12.571 +08:00] [INFO] [versions.go:54] [“Welcome to dumpling”] [“Release Version”=v8.5.2] [“Git Commit Hash”=f43a13324440f92209e2a9f04c0bbe9cf763978d] [“Git Branch”=HEAD] [“Build timestamp”=“2025-05-29 03:30:55”] [“Go Version”=“go version go1.23.8 linux/amd64”]
[2025/07/21 09:06:12.580 +08:00] [INFO] [version.go:457] [“detect server version”] [type=TiDB] [version=6.5.3]
[2025/07/21 09:06:12.638 +08:00] [INFO] [pd_service_discovery.go:998] [“[pd] update member urls”] [old-urls=“[http://173.16.200.129:2379,http://173.16.200.130:2379,http://173.16.200.128:2379]”] [new-urls=“[http://173.16.200.128:2379,http://173.16.200.129:2379,http://173.16.200.130:2379]”]
[2025/07/21 09:06:12.638 +08:00] [INFO] [pd_service_discovery.go:1023] [“[pd] switch leader”] [new-leader=http://173.16.200.129:2379] [old-leader=]
[2025/07/21 09:06:12.638 +08:00] [INFO] [pd_service_discovery.go:499] [“[pd] init cluster id”] [cluster-id=7173924642944695712]
[2025/07/21 09:06:12.639 +08:00] [INFO] [client.go:532] [“[pd] changing service mode”] [old-mode=UNKNOWN_SVC_MODE] [new-mode=PD_SVC_MODE]
[2025/07/21 09:06:12.640 +08:00] [INFO] [tso_client.go:296] [“[tso] switch dc tso global allocator serving url”] [dc-location=global] [new-url=http://173.16.200.129:2379]
[2025/07/21 09:06:12.641 +08:00] [INFO] [client.go:538] [“[pd] service mode changed”] [old-mode=UNKNOWN_SVC_MODE] [new-mode=PD_SVC_MODE]
[2025/07/21 09:06:12.641 +08:00] [INFO] [tso_dispatcher.go:140] [“[tso] start tso deadline watcher”] [dc-location=global]
[2025/07/21 09:06:12.641 +08:00] [INFO] [tso_client.go:132] [“[tso] start tso dispatcher check loop”]
[2025/07/21 09:06:12.641 +08:00] [INFO] [tso_dispatcher.go:198] [“[tso] tso dispatcher created”] [dc-location=global]
[2025/07/21 09:06:12.641 +08:00] [INFO] [tso_dispatcher.go:476] [“[tso] start tso connection contexts updater”] [dc-location=global]
[2025/07/21 09:06:12.641 +08:00] [INFO] [tso_dispatcher.go:723] [“[tso] switching tso rpc concurrency”] [old=0] [new=1]
[2025/07/21 09:06:12.644 +08:00] [INFO] [dump.go:1529] [“generate dumpling gc safePoint id”] [id=dumpling_1753059972644887194]
[2025/07/21 09:06:12.677 +08:00] [INFO] [dump.go:152] [“begin to run Dump”] [conf=“{"s3":{"endpoint":"","region":"","storage-class":"","sse":"","sse-kms-key-id":"","acl":"","access-key":"","secret-access-key":"","session-token":"","provider":"","force-path-style":true,"use-accelerate-endpoint":false,"role-arn":"","external-id":"","object-lock-enabled":false},"gcs":{"endpoint":"","storage-class":"","predefined-acl":"","credentials-file":""},"azblob":{"endpoint":"","account-name":"","account-key":"","access-tier":"","sas-token":"","encryption-scope":"","encryption-key":""},"SpecifiedTables":false,"AllowCleartextPasswords":false,"SortByPk":true,"NoViews":true,"NoSequences":true,"NoHeader":false,"NoSchemas":false,"NoData":false,"CompleteInsert":false,"TransactionalConsistency":true,"EscapeBackslash":true,"DumpEmptyDatabase":true,"PosAfterConnect":false,"CompressType":0,"Host":"173.16.200.97","Port":4000,"Threads":16,"User":"root","Security":{"CAPath":"","CertPath":"","KeyPath":""},"LogLevel":"info","LogFile":"./dumpling_output/dumpling.log","LogFormat":"text","OutputDirPath":"./dumpling_output","StatusAddr":":8281","Snapshot":"459554153465643012","Consistency":"snapshot","CsvNullValue":"\\N","SQL":"","CsvSeparator":",","CsvDelimiter":"\"","CsvLineTerminator":"\r\n","Databases":,"Where":"","FileType":"sql","ServerInfo":{"ServerType":3,"ServerVersion":"6.5.3","HasTiKV":true},"Rows":20000,"ReadTimeout":900000000000,"TiDBMemQuotaQuery":0,"FileSize":10484711424,"StatementSize":1000000,"SessionParams":{"tidb_snapshot":"459554153465643012"},"Tables":{},"CollationCompatible":"loose","CsvOutputDialect":0,"IOTotalBytes":null,"Net":""}”]
[2025/07/21 09:06:15.364 +08:00] [INFO] [writer.go:272] [“no data written in table chunk”] [database=hdy_user] [table=auth_user_warehouse_menu] [chunkIdx=0]
[2025/07/21 09:06:15.610 +08:00] [INFO] [collector.go:264] [“backup success summary”] [total-ranges=26] [ranges-succeed=26] [ranges-failed=0] [total-take=1.049025679s] [total-kv-size=4.961MB] [average-speed=4.729MB/s] [total-rows=115000]
[2025/07/21 09:06:15.610 +08:00] [INFO] [tso_dispatcher.go:490] [“[tso] exit tso connection contexts updater”] [dc-location=global]
[2025/07/21 09:06:15.610 +08:00] [INFO] [tso_dispatcher.go:264] [“[tso] stop fetching the pending tso requests due to context canceled”] [dc-location=global]
[2025/07/21 09:06:15.610 +08:00] [INFO] [tso_dispatcher.go:201] [“[tso] exit tso dispatcher”] [dc-location=global]
[2025/07/21 09:06:15.610 +08:00] [INFO] [resource_manager_client.go:296] [“[resource manager] exit resource token dispatcher”]
[2025/07/21 09:06:15.610 +08:00] [INFO] [main.go:82] [“dump data successfully, dumpling will exit now”]
[2025/07/21 09:06:15.610 +08:00] [INFO] [tso_client.go:147] [“[tso] exit tso dispatcher check loop”]
[2025/07/21 09:06:15.610 +08:00] [INFO] [pd_service_discovery.go:552] [“[pd] exit member loop due to context canceled”]
[2025/07/21 09:06:15.610 +08:00] [INFO] [tso_dispatcher.go:158] [“[tso] exit tso deadline watcher”] [dc-location=global]
[root@nd97 dumpling_output]#

导入:myloader -h 127.0.0.1 -u root -p ‘xxxx’ -P 3306 -d ./dumpling_output/
没有任何报错

导出导入参考的TIDB的官方文档,只做全量导出导入 ,不做增量,文章如下:
https://docs.pingcap.com/zh/tidb/dev/migrate-from-tidb-to-mysql/

涉及章节:
第 2 步:迁移全量数据
2.备份数据。
3.恢复数据。

问题已经解决了

该问题由 @小龙虾爱大龙虾 帮忙解决了,也感谢其他网友帮忙解答。

原因:
MySQL [(none)]> show variables like ‘%sql_select_limit%’;
±-----------------±------+
| Variable_name | Value |
±-----------------±------+
| sql_select_limit | 5000 |
±-----------------±------+
1 row in set (0.00 sec)

MySQL [(none)]>
这个限制了查询语句返回最大行数,默认值 18446744073709551615,这套集群被人修改了这个参数
https://docs.pingcap.com/zh/tidb/v7.5/system-variables/#sql_select_limit-span-classversion-mark从-v402-版本开始引入span

dumpling的运行日志发出来看看

每个文件 5000 行数据怎么得出来的

是包含5000行表的数据。

用wc统计下导出的表行数看看

日志已经加到贴子上了。

导入是怎么导入的,倒入的石斛有没有遇到报错

这样导入的:myloader -h 127.0.0.1 -u root -p ‘xxxx’ -P 3306 -d ./dumpling_output/,导入的时候 没有报任何日志

加到帖子里了,请查阅

myloader和dumpling应该是不匹配的,grep下sql文件的insert,只有一个insert么,还是有多个

只有一个INSERT,后面全是数据:
[root@nd97 dumpling_output]# cat hdy_user.auth_user_warehouse_menu.0000000230000.sql|grep INSERT
INSERT INTO auth_user_warehouse_menu VALUES
[root@nd97 dumpling_output]#

TIDB官方文档推荐用MYDUMPER 导入的,我看了,其实主要是导出的数据不完整,导入应该是没问题的。

mysql -u root -p xxxx -P 4000 -h 127.0.0.1 -e “select count(1) from hdy_user.auth_user_warehouse_menu”,你这样计算下表行数看看,是不是配置了什么代理啥的,代理到测试环境tidb了,导出已经success了,按理说没啥问题

查询是没问题的:
[root@nd97 dumpling_output]# tidb -e “select count(1) from hdy_user.auth_user_warehouse_menu”
±---------+
| count(1) |
±---------+
| 10464560 |
±---------+
[root@nd97 dumpling_output]#

那就很诡异了,从dumpling的日志看导出也就很少的时间,而且看大小kv就几M,结果也是成功的,除了导错链接想不出来别的可能了,github也没有类似bug

我用mysqldump导出也有这个问题,我通过dbvear这样的工具导出也有这个问题,小于5000行的表直接可以导出来,大于5000行的,就导出了5000行。

请执行以下查询

show variables like '%sql_select_limit%';

MySQL [(none)]> show variables like ‘%sql_select_limit%’;
±-----------------±------+
| Variable_name | Value |
±-----------------±------+
| sql_select_limit | 5000 |
±-----------------±------+
1 row in set (0.00 sec)

MySQL [(none)]>

这个限制了查询语句返回最大行数,默认值 18446744073709551615,这套集群被人修改了这个参数
https://docs.pingcap.com/zh/tidb/v7.5/system-variables/#sql_select_limit-span-classversion-mark从-v402-版本开始引入span

2 个赞

非常感谢兄弟的热心帮助,就是这个问题,目前已经解决了,非常感谢!