暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysql上执行flush logs做什么

原创 f5d 云和恩墨交付战队 2022-05-24
5296

flush logs到底做了什么?
图片.png
官方给的解释:
Flush logs操作会关闭并开启新的binlog文件(切换binlog)。如果binlog 和relay log 开启,会生成一个新序号的文件。
看下源码这部分:
图片.png
从源码提供信息,看数据库在flush logs执行阶段时需要执行ha_binlog_wait(),也就是切换日志前的挂起事务信息要写入binlog,然后获取lock_log锁,切换binlog,释放lock_log
ha_binlog_wait()有个循环赋值:
图片.png
Flush binlog阶段:
图片.png
在flush 日志阶段,需要lock_log锁,清空flush队列,保证prepared record记录能够被写入binary log中。写完之后,执行binlog切换,释放锁。

当有大事务在写binlog时,flush log会卡住,在等之前prepare语句写入完binlog ;
当有大事务时,正在持续写binlog会超过my.cnf规定的binlog_size大小。

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论