dumpling

【 TiDB 使用环境】生产环境 /测试/ Poc
【 TiDB 版本】
【复现路径】做过哪些操作出现的问题
【遇到的问题:问题现象及影响】
【资源配置】
【附件:截图/日志/监控】


dumpling数据导出的时候有加条件 但是导出的时候查看日志的条数和数据库查询的条数不一样

image

可以脱敏一下,发下你的 sql 语句么

/home/tidb/dumpling -h*** -uroot -p**** -P4000 --filetype sql --logfile /backup/test/1.log -T test.t1 -o /backup/test -t 6 -r 4000000 --where “id=‘AE3133021000020141’”

有点难看啊, 是不是id不起作用啊

可能是字符集的问题吗???
image
编码不同导致匹配的数据不同

导出的数据恢复了下,id=‘AE3133021000020141 的数据量和从数据库查询出来的数据量一致,全表数据量7千多万,符合条件的数据1千多万

感觉这个可能性比较小,昨天导出过一次,但是条件是2个条件的组合,日志显示导出的数据量和数据库查询的数据量一致

创建个临时库。dumpling的数据可以进行手工入库的。 入进去进行查询看看。

表结构发下,查询的select发下。脱敏处理下,主要看看这个编码规则的问题

会不会是这个数据是估算的,根据统计信息之类?

(root@localhost)[test] 10:03:41>select count() from vsunusedmark;----
±---------+
| count(
) |
±---------+
| 44124732 |
±---------+
1 row in set (9.35 sec)

(root@localhost)[test] 10:04:02>show create table vsunusedmark\G
*************************** 1. row ***************************
Table: vsunusedmark
Create Table: CREATE TABLE vsunusedmark (
VISAPRE varchar(20) COLLATE utf8mb4_bin DEFAULT NULL,
VISASERIALNO varchar(100) COLLATE utf8mb4_bin NOT NULL,
VISACODE varchar(40) COLLATE utf8mb4_bin NOT NULL,
VISANAME varchar(200) COLLATE utf8mb4_bin NOT NULL,
PRESSBATCHNO varchar(32) COLLATE utf8mb4_bin NOT NULL,
BUSINESSNO varchar(100) COLLATE utf8mb4_bin DEFAULT NULL,
VISAAMOUNT decimal(15,3) DEFAULT NULL,
USEDATE datetime NOT NULL,
USERTYPE varchar(2) COLLATE utf8mb4_bin NOT NULL,
USERCODE varchar(40) COLLATE utf8mb4_bin NOT NULL,
USERNAME varchar(240) COLLATE utf8mb4_bin NOT NULL,
VISASTATUS varchar(40) COLLATE utf8mb4_bin NOT NULL,
PROVIDETIMES decimal(15,0) DEFAULT NULL,
RECYCLETIMES decimal(15,0) DEFAULT NULL,
VERIFIEDCANCELFLAG varchar(2) COLLATE utf8mb4_bin NOT NULL,
BEFORESTATUS varchar(40) COLLATE utf8mb4_bin DEFAULT NULL,
REMARK varchar(510) COLLATE utf8mb4_bin DEFAULT NULL,
FLAG varchar(20) COLLATE utf8mb4_bin DEFAULT NULL,
COMCODE varchar(40) COLLATE utf8mb4_bin DEFAULT NULL,
USEDENDDATE datetime DEFAULT NULL,
GDVISACODE varchar(510) COLLATE utf8mb4_bin DEFAULT NULL,
GDVISASERIALNO varchar(510) COLLATE utf8mb4_bin DEFAULT NULL,
USEDTIME datetime DEFAULT NULL COMMENT ‘已使用时间’,
INVALIDTIME datetime DEFAULT NULL COMMENT ‘作废时间’,
COLLARTIME datetime DEFAULT NULL COMMENT ‘领用时间’,
LOSTTIME datetime DEFAULT NULL COMMENT ‘已丢失时间’,
UPDATETIME datetime DEFAULT NULL COMMENT ‘最后一次更新时间’,
DESTROYTIME datetime DEFAULT NULL COMMENT ‘销毁时间’,
ATTRIBUTIVECOMCODE varchar(40) COLLATE utf8mb4_bin DEFAULT NULL COMMENT ‘归属省分机构代码’,
PROVIDECOMTIME datetime DEFAULT NULL COMMENT ‘发放到部门时间’,
TRANSSTATUSTIME datetime DEFAULT NULL COMMENT ‘状态转化时间’,
PRIMARY KEY (VISACODE,VISASERIALNO),
KEY IDX_VSUNUSEDMARK_BUSINESSNO (BUSINESSNO),
KEY IDX_VSUNUSEDMARK_CODE_STAT (VISACODE,VISASTATUS),
KEY IDX_VSUNUSEDMARK_COMCODE (COMCODE),
KEY IDX_VSUNUSEDMARK_UCODE_VSTAT (VISASTATUS,USERCODE),
KEY IDX_VSUNUSEDMARK_UPDATETIME (UPDATETIME),
KEY IDX_VSUNUSEDMARK_USERCODE (USERCODE),
KEY IDX_VSUNUSEDMARK_VISASERIALNO (VISASERIALNO),
KEY IDX_VSUNUSEDMARK_VISA_USR (VISACODE,USERCODE),
KEY IDX_VSUNUSED_VCSN (VISASERIALNO,VISACODE),
KEY IDX_VSUNUSED_COMCODE_VISACODE (COMCODE,VISACODE),
KEY idx_vsunusedmark_acomcode (ATTRIBUTIVECOMCODE)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
1 row in set (0.00 sec)

就是创建了个临时库把导出的数据恢复了下,恢复的数据量和导出的日志里面显示的数据量能对的上

select count(1) from vsunusedmark where VISACODE = ‘AE3133021000020141’ —此处是dumpling的where 条件。 导出库看下. 这个值是11136394吗?

您把 dumpling出来的目录 ls-al 看下。 -r参数去掉看下

是的导出库加上条件 数据可以对的上

ls -al
total 14410956
drwxr-xr-x 2 root root 150 Feb 7 20:07 .
drwxr-xr-x 14 root root 287 Feb 7 21:07 …
-rw-r–r-- 1 root root 95 Feb 7 17:17 test-schema-create.sql
-rw-r–r-- 1 root root 12792558533 Feb 7 20:05 test.vsunusedmark.000000001.sql
-rw-r–r-- 1 root root 1964246386 Feb 7 20:05 test.vsunusedmark.000000002.sql
-rw-r–r-- 1 root root 1636 Feb 7 17:17 test.vsunusedmark-schema.sql

image
这两个文件都导入了吧


您也把这个 类似的截图发下 我看下吧

对的 都导入了

我中午再导一次试试,昨天发现有问题之后我又没有加条件,全库导出了一次,数据量可以对的上,第一次加了条件的数据和日志我都删除了