首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >pt-存档器挂在最后的剩余行上。

pt-存档器挂在最后的剩余行上。
EN

Stack Overflow用户
提问于 2018-06-13 22:19:28
回答 3查看 667关注 0票数 0

我正试图用pt-archiver清除mysql表,并面临一个奇怪的问题。

假设下面的查询返回60789行。

代码语言:javascript
复制
SELECT COUNT(*) FROM abc WHERE created_at BETWEEN '2008-09-01 00:00:00' AND '2008-09-05 23:59:59';

我正在使用下面的pt存档语法来清除行。

代码语言:javascript
复制
/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

EN

回答 3

Stack Overflow用户

发布于 2018-06-19 04:10:25

我无法重现你所面临的问题:

代码语言:javascript
复制
$ pt-archiver --version
pt-archiver 3.0.9

是否可以发送您的MySQL版本和表结构?

代码语言:javascript
复制
SHOW CREATE TABLE <table_name>\G
SELECT @@version;
票数 0
EN

Stack Overflow用户

发布于 2018-06-19 15:43:29

谢谢@Vinicius。我解决了这个问题。

我用了--where语句如下。

代码语言:javascript
复制
--where "created_at >= '2008-09-01 00:00:00' AND created_at <= '2008-09-05 23:59:59'"

当我使用"created_at“pt存档时,它永远停留在最后一个事务上。然后,我决定使用表的主键"id“in -where语句如下。

代码语言:javascript
复制
--where "id>=18689121 AND id<=19998441"

因此,使用"id“pt-存档程序可以完美地工作。

我不知道为什么它不工作与时间戳,但问题是解决时,"id“是使用。

票数 0
EN

Stack Overflow用户

发布于 2019-09-15 19:04:00

我不确定如何容易地计算出要传递给id脚本的PK pt-archiver范围。

一个更合适的解决方案是更新这个线程中描述的pt-archiver脚本:https://bugs.launchpad.net/percona-toolkit/+bug/1193474/comments/4

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50847087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档