墨墨导读:MySQL生态中服务层的二进制日志有着非常重要的作用,MVCC机制不用的binlog,是否可以去掉?本文作者详述对MySQL的binlog cache的理解。
数据技术嘉年华,十周年盛大开启,点我立即报名!大会以“自研·智能·新基建——云和数据促创新 生态融合新十年” 为主题,相邀数据英雄,总结过往十年历程与成绩,展望未来十年趋势与目标!近60场演讲,大咖云集,李飞飞、苏光牛、林晓斌、黄东旭...,快来pick你喜欢的嘉宾主题吧!
MySQL生态中服务层的二进制日志有着非常重要的作用,有人问过MVCC机制不用的binlog,是否可以去掉,答案是否。binlog用于记录用户对数据库操作的SQL语句(除了数据查询语句),但同时用于保障高可用架构中的复制方式。
本文从一个日常不太关心的参数开始,了解一下mysql的binlog cache。
crash的截图内容:
2020-08-01T05:44:04.068924+08:00 674
[ERROR] An error occurred during flush stage of the commit.
'binlog_error_action' is set to 'IGNORE_ERROR'.
Hence turning logging off for the whole duration of the MySQL server process.
To turn it on again: fix the cause, shutdown the MySQL server and restart it.
从上述错误信息中了解到奥binlog flush无法进行下去,抛出binlog_error的异常,最终导致MySQL crash。
1)从上述错误中binlog_error_action
binlog_error_action:这个参数的意义在保证正确的写入binary log日志,
,默认值为 ABORT_SERVER,当出现错误的时候会使 MySQL 在写 binlog 遇到严重错误时直接退出( 即 Crash 动作)