位置: 编程技术 - 正文
推荐整理分享MySQL binlog中的事件类型详解(mysql binlog redo),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:mysql binlog redolog,mysql binlog的作用,mysql binlog的作用,mysqlbinlog -vvv,mysql binlog的作用,mysql binlog redolog,mysql binlog redolog,mysqlbinlog -d,内容如对您有帮助,希望把文章链接给更多的朋友!
MySQL binlog记录的所有操作实际上都有对应的事件类型的,譬如STATEMENT格式中的DML操作对应的是QUERY_EVENT类型,ROW格式下的DML操作对应的是ROWS_EVENT类型。
首先,看看源码中定义的事件类型
源码位置:mysql-5.7./libbinlogevents/include/binlog_event.h
实际上还是蛮多的,下面就挑几个重点的说一下
QUERY_EVENT
QUERY_EVENT以文本的形式来记录事务的操作。
QUERY_EVENT类型的事件通常在以下几种情况下使用:
1. 事务开始时,执行的BEGIN操作。
2. STATEMENT格式中的DML操作
3. ROW格式中的DDL操作
譬如:
FORMAT_DESCRIPTION_EVENT
FORMAT_DESCRIPTION_EVENT是binlog version 4中为了取代之前版本中的START_EVENT_V3事件而引入的。它是binlog文件中的第一个事件,而且,该事件只会在binlog中出现一次。MySQL根据FORMAT_DESCRIPTION_EVENT的定义来解析其它事件。
它通常指定了MySQL Server的版本,binlog的版本,该binlog文件的创建时间。
譬如:
ROWS_EVENT
对于ROW格式的binlog,所有的DML语句都是记录在ROWS_EVENT中。
ROWS_EVENT分为三种:WRITE_ROWS_EVENT,UPDATE_ROWS_EVENT,DELETE_ROWS_EVENT,分别对应insert,update和delete操作。
对于insert操作,WRITE_ROWS_EVENT包含了要插入的数据
对于update操作,UPDATE_ROWS_EVENT不仅包含了修改后的数据,还包含了修改前的值。
对于delete操作,仅仅需要指定删除的主键(在没有主键的情况下,会给定所有列)
对于QUERY_EVENT事件,是以文本形式记录DML操作的。而对于ROWS_EVENT事件,并不是文本形式,所以在通过mysqlbinlog查看基于ROW格式的binlog时,需要指定-vv --base-output=decode-rows。
譬如:
XID_EVENT
在事务提交时,不管是STATEMENT还是ROW格式的binlog,都会在末尾添加一个XID_EVENT事件代表事务的结束。该事件记录了该事务的ID,在MySQL进行崩溃恢复时,根据事务在binlog中的提交情况来决定是否提交存储引擎中状态为prepared的事务。
ROTATE_EVENT
当binlog文件的大小达到max_binlog_size的值或者执行flush logs命令时,binlog会发生切换,这个时候会在当前的binlog日志添加一个ROTATE_EVENT事件,用于指定下一个日志的名称和位置。
GTID_LOG_EVENT
在启用GTID模式后,MySQL实际上为每个事务都分配了个GTID
譬如:
PREVIOUS_GTIDS_LOG_EVENT
开启GTID模式后,每个binlog开头都会有一个PREVIOUS_GTIDS_LOG_EVENT事件,它的值是上一个binlog的PREVIOUS_GTIDS_LOG_EVENT+GTID_LOG_EVENT,实际上,在数据库重启的时候,需要重新填充gtid_executed的值,该值即是最新一个binlog的PREVIOUS_GTIDS_LOG_EVENT+GTID_LOG_EVENT。
譬如:
mysql-bin.日志中的Previous_gtids是cadf2-5d4f-e6-b-cc:1,GTID是cadf2-5d4f-e6-b-cc:2和cadf2-5d4f-e6-b-cc:3,这样,在下一个日志,即mysql-bin.中的Previous_gtids是cadf2-5d4f-e6-b-cc:1-3。
STOP_EVENT
当MySQL数据库停止时,会在当前的binlog末尾添加一个STOP_EVENT事件表示数据库停止。
譬如:
以上所述是小编给大家介绍的MySQL binlog中的事件类型详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对积木网网站的支持!
Mysql 自定义随机字符串的实现方法 前几天在开发一个系统,需要用到随机字符串,但是mysql的库函数有没有直接提供,就简单的利用现有的函数东拼西凑出随机字符串来.下面简单的说下
MySQL5.7 windows二进制安装教程 介绍1.下载解压下载地址:
MySQL5.6下windows msi安装详细介绍 一、功能介绍1.MySQLServers该功能是mysql主要的服务,也是必须安装的功能。2.MysqlWorkBench这个是mysql的客户端工具,可以单独下载安装程序安装。3.MysqlNotifi
友情链接: 武汉网站建设