tidb在使用pt-archive工具进行归档过程中,删除数据和插入数据问题不对等,

发布于:2023-01-21 ⋅ 阅读:(423) ⋅ 点赞:(0)

1.问题描述

tidb在使用pt-archive工具进行归档过程中,删除数据和插入数据问题不对等,

2.测试验证:

测试场景一:--bulk-insert --bulk-delete && i=created_date_channel

归档前数据:

需要归档的数据为:1076706 条

归当前目标端数据清空

归档脚本

pt-archiver --no-version-check  --source h=

xxxx,P=xxxx,u=xxxx,D=test,t=order,A=utf8mb4,i=created_date_channel,p='xxxx' --dest h=xxxx,P= xxx,u=xxxxx,D=test,t=mytest20220629,A=utf8mb4,p='xxxxx'  --charset=UTF8 --where "created_date<'2022-02-01 00:00:00'" --progress 10000 --limit=10000 --txn-size=10000 --run-time=5h  --bulk-insert --bulk-delete –statistics

归档后,目标端数据:1076672

源端数据:任然有34条数据没有归档完成

在源端查询这34条数据中取一条在目标端比对,发现在目标端已经存在

再次手动执行归档脚本

发现这次只delete没有insert操作

最终结果是源端删除了1076706条数据,目标端插入了1076672,最终归档结果是归档数据丢失了34条数据。

另外:测试2次,第一次少34条数据,第二次少44条数据

另外还有一个问题

加bulk-insert 的时候 如果插入有重复值 不会抛出异常,而是直接进行数据删除

测试场景二 不带索引

归档前,数据和场景一一致

pt-archiver --no-version-check  --source h=xxxxx,P= xxx,u=xxx,D=xxxx,t=order,A=utf8mb4 ,p='xxxx' --dest h=xxxx,P=xxxx,u=xxxxx,D=test,t=mytest20220629,A=utf8mb4,p='xxxx'  --charset=UTF8 --where "created_date<'2022-02-01 00:00:00'" --progress 10000 --limit=10000 --txn-size=10000   --bulk-insert --bulk-delete --statistics 

 

测试结果:插入和删除数据一致,2次测试结果都一样。

3.解决办法

修改pt-archive 工具代码,在指定index归档的前提条件下,强制使delete sql走索引

如下所示,红色方框为要添加的内容


网站公告

今日签到

点亮在社区的每一天
去签到