flush logs到底做了什么?

官方给的解释:
Flush logs操作会关闭并开启新的binlog文件(切换binlog)。如果binlog 和relay log 开启,会生成一个新序号的文件。
看下源码这部分:

从源码提供信息,看数据库在flush logs执行阶段时需要执行ha_binlog_wait(),也就是切换日志前的挂起事务信息要写入binlog,然后获取lock_log锁,切换binlog,释放lock_log
ha_binlog_wait()有个循环赋值:

Flush binlog阶段:

在flush 日志阶段,需要lock_log锁,清空flush队列,保证prepared record记录能够被写入binary log中。写完之后,执行binlog切换,释放锁。
当有大事务在写binlog时,flush log会卡住,在等之前prepare语句写入完binlog ;
当有大事务时,正在持续写binlog会超过my.cnf规定的binlog_size大小。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




