【概述】
使用 dumpling 导出 sql文件后查看,存在重复的数据
【业务影响】
备份数据就不正确了!
【TiDB 版本】
v4.0.12
你说的唯一字段是设置了unique吗,用你搜索的这个字段值去数据库中查一下看看结果呢?
执行导出的命令麻烦再发一下
./dumpling -h 192.168.0.123 -P 5002 -u abc -p abc123 -B table_name -t 4 -o /data/tidb-backup/backup_data_test/backup_tablename/
【注】 -h 192.168.0.123 是一台 haproxy 服务器,用来做负载均衡,端口是 5002
sql文件里面值相同的那两句SQL是否完全一致呢
是的,我比对过,数据是一模一样的,因为我要把这个备份的数据导入到mysql中,导入过程中出现了唯一键重复的问题,我才查看了一下这个备份的文件,发现了这个问题
辛苦在 dumpling 命令行中加上 --where
以及开启 debug 指定导出这个 PK 的数据。看看是否备份出来两行数据?
https://docs.pingcap.com/zh/tidb/stable/dumpling-overview#筛选导出的数据
感谢您的指导,我刚才又操作了一遍,发现这个字段其中有一个 后面多了一个空格,在导出的时候,dumpling把空格去掉了,所以导致存在重复的问题。感谢您的指导,这个问题应该就解决了
您好我本地尝试复现了下这个问题发现无法复现,dumpling 也没有 trim 空格类似的逻辑。请问方便发一下脱敏后的表结构帮助我们调查一下这个问题吗?
您好,出现问题的是 cust_taxcode 这个栏位
CREATE TABLE base_enterprise123
(
id
varchar(64) NOT NULL COMMENT ‘数据id’,
cust_taxcode
varchar(20) NOT NULL,
cust_name
varchar(250) NOT NULL,
cust_type
varchar(1) NOT NULL ,
disktype
varchar(1) NOT NULL ,
szsf_id
varchar(64) NOT NULL ,
szcs_id
varchar(64) NOT NULL ,
szqx_id
varchar(64) NOT NULL,
szsf_mc
varchar(100) DEFAULT NULL,
szcs_mc
varchar(100) DEFAULT NULL,
szqx_mc
varchar(100) DEFAULT NULL,
create_time
datetime NOT NULL,
update_time
datetime DEFAULT NULL,
update_remark
varchar(200) DEFAULT NULL,
PRIMARY KEY (id
),
UNIQUE KEY unique_taxcode
(cust_taxcode
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
不对,应该是我描述有点问题:在使用dumpling导出的时候数据的空格仍然存在,但是在使用 loader 将数据导入到mysql中的时候,空格被trim 掉了
sql 文件中还是有空格的,但是导入的时候 loader 自动把空格 trim 了导致了报错,这个理解对吗?
能再方便问下导入工具使用的是 loader 还是 tidb-lightning 呢?感谢
对的对的,因为 我 cust_taxcode
设置的是唯一,在loader 执行过程中报出的这个唯一键冲突。
了解了,感谢!
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。