我正试图用pt-archiver清除mysql表,并面临一个奇怪的问题。
假设下面的查询返回60789行。
SELECT COUNT(*) FROM abc WHERE created_at BETWEEN '2008-09-01 00:00:00' AND '2008-09-05 23:59:59';我正在使用下面的pt存档语法来清除行。
/usr/local/bin/pt-archiver --source h=localhost,u=root,p=abcdef,D=cbs_production,t=abc \
--where "created_at >= '2008-09-01 00:00:00' AND created_at <= '2008-09-05 23:59:59'" \
--purge --sleep-coef 1.0 --txn-size 1000 --progress=1000 --statistics因此,它开始在每次迭代中删除行1000,但当它完成61000时,它将永远挂起,并且不会删除其余的789行。
我试过以下版本的Percona。pt-存档程序3.0.9和pt-存档程序3.0.10
我还咨询了下面的帖子,但没有任何效果。
https://bugs.launchpad.net/percona-toolkit/+bug/1096274 https://bugs.launchpad.net/percona-toolkit/+bug/1583498 https://bugs.launchpad.net/percona-toolkit/+bug/1193474
发布于 2018-06-19 04:10:25
我无法重现你所面临的问题:
$ pt-archiver --version
pt-archiver 3.0.9是否可以发送您的MySQL版本和表结构?
SHOW CREATE TABLE <table_name>\G
SELECT @@version;发布于 2018-06-19 15:43:29
谢谢@Vinicius。我解决了这个问题。
我用了--where语句如下。
--where "created_at >= '2008-09-01 00:00:00' AND created_at <= '2008-09-05 23:59:59'"当我使用"created_at“pt存档时,它永远停留在最后一个事务上。然后,我决定使用表的主键"id“in -where语句如下。
--where "id>=18689121 AND id<=19998441"因此,使用"id“pt-存档程序可以完美地工作。
我不知道为什么它不工作与时间戳,但问题是解决时,"id“是使用。
发布于 2019-09-15 19:04:00
我不确定如何容易地计算出要传递给id脚本的PK pt-archiver范围。
一个更合适的解决方案是更新这个线程中描述的pt-archiver脚本:https://bugs.launchpad.net/percona-toolkit/+bug/1193474/comments/4
https://stackoverflow.com/questions/50847087
复制相似问题