首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当使用pt-online模式更改或gh-ost更改表时,binlog会发生什么情况?

当使用pt-online模式更改或gh-ost更改表时,binlog会发生什么情况?
EN

Stack Overflow用户
提问于 2022-02-21 22:17:12
回答 1查看 292关注 0票数 2

我想知道当使用pt-online-schema-changegh-ost运行一个更改时,binlog会发生什么变化。

对于pt-online-schema-change,我已经看到它复制了表,并使用一些触发器应用这些更改。我不知道它是从一开始就用新模式创建一个表,还是只是在复制表之后应用alter?

如果从一开始就改变了表,那么binglog会发生什么呢?这些位置是否与之前的binglog不同?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-21 22:53:21

pt模式更改复制表结构,并将所需的ALTER应用于零行表.这几乎是瞬间的。然后,它创建触发器来根据原始表镜像更改。然后开始将旧数据从原始表复制到新表。

二进制日志发生了什么?它变得相当大。CREATE表、ALTER和CREATE触发器非常小。DDL在binlog中始终是基于语句的。触发器创建的DML更改和复制旧数据的过程成为binlog中的事务。我们更喜欢基于行的二进制日志,因此这些日志最终变得相当庞大。

gh-ost是相似的,但没有触发器。gh-ost读取binlog以查找应用于旧表的事件,并将这些事件应用于新表。同时,它还复制了旧数据。这些操作共同导致在使用pt-online模式更改时,在binlog中产生类似数量的额外事件。

因此,在开始这些在线模式更改操作之前,您应该检查空闲磁盘空间的数量。它将按要复制的数据量的比例展开绑定日志。当然,您需要暂时存储整个表的两个副本--原始版本和修改版本,直到原始表可以在处理结束时删除为止。

当我有一个接近满的磁盘时,我不得不在大型表(500GB+)上运行pt-online模式更改。它会引起一些紧张的时刻。我必须定期清除二进制日志,以获得更多的空闲空间,因为如果不这样做,模式更改将将磁盘填充到100%!这不是我推荐的情况。

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

https://stackoverflow.com/questions/71213673

复制
相关文章

相似问题

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