pt-online-schema-change会增加如此多的复制线程吗?

时间:2017-08-18 15:36:44

标签: mysql percona

前几天,我使用pt-online-schema-change为表添加列和索引,表大约有100万行,.ibd文件大小约为5G字节。

每次我收到错误时我都试了好几次说过程中止了 达到临界负载(这是threads_running = 60,我总是使用它,之前从未失败过)

我使用show full process list找到了一些奇怪的东西:那里有很多复制线程:

REPLACE INTO `db`.`_some_table_new` ...

长时间运行(数十和数百秒)并处于“更新”状态。

我知道pt-online-schema-change只使用一个拷贝线程,我多次使用这个工具,每次我只能观察一个线程分块和复制但是这次一切都改变了,有那么多拷贝线程阻止那里。

我搜索了percona.com中的文档,但找不到任何相关信息 关于多线程复制的选项。

我这次更改的表是非常频繁访问的,但我认为只要有一个复制线程就不会出现问题。

任何人都可以给我一些帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

REPLACE语句由pt-online-schema-change创建的触发器运行。

pt-online-schema-change只运行一个线程。但是触发器可能会被原始表上执行INSERT / UPDATE / DELETE的许多其他客户端线程执行。

pt-online-schema-change不是免费改变表的神奇方式。它有成本。该表的每次更新都会成为两次更新。

听起来您的服务器无法处理运行pt-online-schema-change的额外负载,而您的流量正在针对原始表运行更新。服务器无法像客户端一样快地执行这些更新。所以他们落后并排队。

您可以升级到功能更强大的服务器。更多CPU内核和更快的I / O系统可能会有所帮助。但那将是非常昂贵的。

更简单的解决方案是将您的表格更改安排在流量较轻的较晚时间。