首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >清除占用时间的二进制日志

清除占用时间的二进制日志
EN

Database Administration用户
提问于 2017-04-20 11:35:17
回答 2查看 3K关注 0票数 1

我们观察了一些查询的高延迟,进一步挖掘发现,通过检查缓慢的查询日志,每5分钟查询一次要花费很长的时间。

我们观察到

代码语言:javascript
运行
复制
PURGE BINARY LOGS TO 'mysql-bin-changelog.041045';

每5分钟运行一次,每次花费超过1000毫秒。同时,类似于

代码语言:javascript
运行
复制
SET timestamp=1492673425; commit;

也需要时间和

代码语言:javascript
运行
复制
SELECT @@session.tx_isolation;

我们在Amazon上使用MySQL 5.7.11。为什么PURGE BINARY LOGS会花费更长的时间而导致其他查询同时陷入困境呢?

EN

回答 2

Database Administration用户

回答已采纳

发布于 2017-04-20 17:45:23

在MySQL5.7中,这是一个相当令人讨厌的错误,我在2个月前就已经在RDS之外体验过了.有一种奇怪的互斥行为涉及到清除二进制日志的行为。

我的解决方法包括手动删除操作系统中的一些二进制日志,如bin-log.index中所列,并执行PURGE BINARY LOGS BEFORE CURDATE() + INTERVAL 2 HOUR; (每2点进行一次夜间清除)。它加快了它的速度,有些是因为它在操作系统中需要检查的文件较少。当涉及到仍然存在的实际绑定日志时,运行PURGE BINARY LOGS ...只需拖动即可。这就是为什么我做手工烟雾弹之类的事。

你的实际情况

在您的特定实例中,您使用的是RDS。由于不能访问操作系统,所以您无法对绑定日志做任何其他操作,因为最大值_联木_大小不能在RDS参数组中更改。如果您有大量或多个事务需要在写入二进制日志之前缓存,则可以更改最大值_联木_缓存_大小,但这可能会有所帮助,也可能无助于您在应用程序中写入的频率。

RECOMMENDATION

MySQL 5.6中不存在此问题。

您可能必须将您的数据库迁移回MySQL 5.6.27RDS。

尾声

根据我的经验,MySQL 5.7.12中的这个bug使我受害。你告诉我窃听器的地址是在MySQL 5.7.14中。我真希望我能像我想的那样升级。由于您的情况出现了MySQL 5.7.11,我知道除了我以外的人注意到了这个问题。请尽快升级到5.7.16。祝你今天愉快!

票数 1
EN

Database Administration用户

发布于 2017-04-20 15:40:11

如果您可以更改配置,我建议您

  • max_binlog_size
  • expire_logs_days设置为适当的值--而不是手动使用PURGE BINARY LOGS

如果PURGE是来自RDS的一些维护脚本,那么向Amazon提交一个bug报告。

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

https://dba.stackexchange.com/questions/171505

复制
相关文章

相似问题

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