MYSQL-- binlog事件详解
mysqlbinlog -vvv log.000001
# at
# :: server id end_log_pos CRC32 0x7439a004 GTID last_committed= sequence_number=
SET @@SESSION.GTID_NEXT= '191f7a9f-ffa2-11e5-a825-00163e00242a:1'/*!*/;
# at
# :: server id end_log_pos CRC32 0x0839a8df Query thread_id= exec_time= error_code=
SET TIMESTAMP=/*!*/;
SET @@session.pseudo_thread_id=/*!*/;
SET @@session.foreign_key_checks=, @@session.sql_auto_is_null=, @@session.unique_checks=, @@session.autocommit=/*!*/;
SET @@session.sql_mode=/*!*/;
SET @@session.auto_increment_increment=, @@session.auto_increment_offset=/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=,@@session.collation_connection=,@@session.collation_server=/*!*/;
SET @@session.lc_time_names=/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at
# :: server id end_log_pos CRC32 0x738c7c74 Table_map: `test`.`tt` mapped to number
# at
# :: server id end_log_pos CRC32 0x1949e971 Write_rows: table id flags: STMT_END_F BINLOG '
mcM6VxNkAAAALQAAAFABAAAAAHEAAAAAAAEABHRlc3QAAnR0AAEDAAF0fIxz
mcM6Vx5kAAAAKAAAAHgBAAAAAHEAAAAAAAEAAgAB//4KAAAAcelJGQ==
'/*!*/;
### INSERT INTO `test`.`tt`
### SET
### @= /* INT meta=0 nullable=1 is_null=0 */
# at
# :: server id end_log_pos CRC32 0x63b03fee Xid =
COMMIT/*!*/;
| log. | | Gtid | | | SET @@SESSION.GTID_NEXT= '191f7a9f-ffa2-11e5-a825-00163e00242a:1' |
| log. | | Query | | | BEGIN |
| log. | | Table_map | | | table_id: (test.tt) |
| log. | | Write_rows | | | table_id: flags: STMT_END_F |
| log. | | Xid | | | COMMIT /* xid=1
mysqlbinlog --base64-output=decode-rows -vvv log.000001 # at
# :: server id end_log_pos CRC32 0x7439a004 GTID last_committed= sequence_number=
SET @@SESSION.GTID_NEXT= '191f7a9f-ffa2-11e5-a825-00163e00242a:1'/*!*/;
# at
# :: server id end_log_pos CRC32 0x0839a8df Query thread_id= exec_time= error_code=
SET TIMESTAMP=/*!*/;
SET @@session.pseudo_thread_id=/*!*/;
SET @@session.foreign_key_checks=, @@session.sql_auto_is_null=, @@session.unique_checks=, @@session.autocommit=/*!*/;
SET @@session.sql_mode=/*!*/;
SET @@session.auto_increment_increment=, @@session.auto_increment_offset=/*!*/;
/*!\C utf8 *//*!*/;
SET @@session.character_set_client=,@@session.collation_connection=,@@session.collation_server=/*!*/;
SET @@session.lc_time_names=/*!*/;
SET @@session.collation_database=DEFAULT/*!*/;
BEGIN
/*!*/;
# at
# :: server id end_log_pos CRC32 0x738c7c74 Table_map: `test`.`tt` mapped to number
# at
# :: server id end_log_pos CRC32 0x1949e971 Write_rows: table id flags: STMT_END_F
### INSERT INTO `test`.`tt`
### SET
### @= /* INT meta=0 nullable=1 is_null=0 */
# at
# :: server id end_log_pos CRC32 0x63b03fee Xid =
COMMIT/*!*/;
binlog事件:由<公有事件头>+[私有事件头]+[事件体]三部分组成
所有的binlog事件都包含公有事件头,另外两个部分是根据事件类型可选
公有事件头:
http://dev.mysql.com/doc/internals/en/event-structure.html v4 event structure: +=====================================+
| event | timestamp : |
| header +----------------------------+
| | type_code : |
| +----------------------------+
| | server_id : |
| +----------------------------+
| | event_length : |
| +----------------------------+
| | next_position : |
| +----------------------------+
| | flags : |
| +----------------------------+
| | extra_headers : x- |
+=====================================+
| event | fixed part x : y |
| data +----------------------------+
| | variable part |
+=====================================+
header length = x bytes data length = (event_length - x) bytes timestamp:包含了该项事件的开始的时间
event type:指是该事件的类型
serer_id :产生该事件的服务器的server-id
event_length :(包括了 公有事件头,私有事件头,事件体三部分的长度) ------------------------------------------------------------------------- binlog事件类型: FORMAT_DESCRIPTION_EVENT
MYSQL根据其定义的来解析其他事件 QUERY_EVENT:
事物开始 BEGIN事件
binlog_format='STATEMENT' ,具体执行的语句保存在QUERY_EVENT事件中
对于ROW 格式的BINLOG,所有DDL以文本格式的记录在QUERY_EVENT中 ROW_EVENT 分三类:(binlog_format='ROW')
1.WRITE_ROWS_EVENT ->insert
包含了要插入的数据
2.UPDATE_ROWS_EVENT ->update
包含了行修改前的值,也包含了修改后的值
3.DELETE_ROWS_EVENT ->delete
包含了需要删除行的主键值/行号 TABLE_MAP_EVENT
每个ROWS_EVENT事件之前有一个TABLE_MAP_EVENT用于描述内部ID和结构定义 XID_EVENT:
MYSQL进行崩溃恢复时间,根据事务在binlog中的提交情况来决定是否提交存储引擎中状态为prepared的事物 BINLOG_CHECKPOINT_EVENT
mysql执行崩溃恢的过程中,会根据读取的BINLOG_CHECKPOINT_EVENT来决定那些binlog文件是可以不用扫描的
ROTATE_EVENT
当BINLOG 文件大小达到max_binlog_size参数设置值时或者flush logs命令时,binlog发生切换,在文件尾添加ROTATE_EVENT事件 STOP_EVENT
MYSQL停止时,在文件尾加入STOP_EVENT
MYSQL-- binlog事件详解的更多相关文章
- mysql binlog配置详解
关闭binlog,注释掉mysql配置文件中的log-bin=mysql-bin即可 baidu zone - 关闭binlog方法 cnblogs - linux下mysql配置文件my ...
- Mysql Binlog日志详解
一.Mysql Binlog格式介绍 Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的sql都会记录在 ...
- MySQL日志功能详解
MySQL日志功能详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.查询日志 它是用来保存所有跟查询相关的日志,这种日志类型默认是关闭状态的,因为MySQL的用户有很多,如果 ...
- MySQL数据库备份详解
原文:MySQL数据库备份详解 对于任何数据库来说,备份都是非常重要的 数据库复制不能取代备份的作用 比如我们由于误操作,在主数据库上删除了一些数据,由于主从复制的时间很短,在发现时,从数据库上的数据 ...
- Mysql加锁过程详解(5)-innodb 多版本并发控制原理详解
Mysql加锁过程详解(1)-基本知识 Mysql加锁过程详解(2)-关于mysql 幻读理解 Mysql加锁过程详解(3)-关于mysql 幻读理解 Mysql加锁过程详解(4)-select fo ...
- MySQL数据库优化详解(收藏)
MySQL数据库优化详解 mysql表复制 复制表结构+复制表数据mysql> create table t3 like t1;mysql> insert into t3 select * ...
- (转)MySQL备份原理详解
MySQL备份原理详解 原文:http://www.cnblogs.com/cchust/p/5452557.html 备份是数据安全的最后一道防线,对于任何数据丢失的场景,备份虽然不一定能恢复百分之 ...
- Mysql 三大特性详解
Mysql 三大特性详解 Mysql Innodb后台线程 工作方式 首先Mysql进程模型是单进程多线程的.所以我们通过ps查找mysqld进程是只有一个. 体系架构 InnoDB存储引擎的架构如下 ...
- JavaScript事件详解-jQuery的事件实现(三)
正文 本文所涉及到的jQuery版本是3.1.1,可以在压缩包中找到event模块.该篇算是阅读笔记,jQuery代码太长.... Dean Edward的addEvent.js 相对于zepto的e ...
- JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】
正文 作者打字速度实在不咋地,源码部分就用图片代替了,都是截图,本文讲解的Zepto版本是1.2.0,在该版本中的event模块与1.1.6基本一致.此文的fastclick理解上在看过博客园各个大神 ...
随机推荐
- POJ 3621 Sightseeing Cows 01分数规划,最优比例环的问题
http://www.cnblogs.com/wally/p/3228171.html 题解请戳上面 然后对于01规划的总结 1:对于一个表,求最优比例 这种就是每个点位有benefit和cost,这 ...
- Cadence关闭StartPage的方法
Cadence 16.5开始,打开原理图工具 Orcad Capture 时,总是会弹出startpage 页面,关闭它的方法: 解决方法如下: (1) View---Toolbar----Comma ...
- CreateThread函数&&CString::GetBuffer函数
对这个两个常见的windows下的函数学习了一下: //最简单的创建多线程实例 #include <stdio.h> #include <windows.h> //子线程函数 ...
- [Hive - LanguageManual] Create/Drop/Grant/Revoke Roles and Privileges / Show Use
Create/Drop/Grant/Revoke Roles and Privileges Hive Default Authorization - Legacy Mode has informati ...
- MapReduce TopK统计加排序
Hadoop技术内幕中指出Top K算法有两步,一是统计词频,二是找出词频最高的前K个词.在网上找了很多MapReduce的Top K案例,这些案例都只有排序功能,所以自己写了个案例. 这个案例分两个 ...
- oracle 字符集转换:AL32UTF8->ZHS16GBK
select userenv('language') from dual; --修改Oracle数据库字符集为ZHS16GBK : SQL>conn / as sysdba; SQL>sh ...
- jQuery-validate error messages in Twitter ...
http://www.jefclaes.be/2012/11/jquery-validate-error-messages-in.html something satisfactory. In thi ...
- UVALive 7281 Saint John Festival (凸包+O(logn)判断点在凸多边形内)
Saint John Festival 题目链接: http://acm.hust.edu.cn/vjudge/contest/127406#problem/J Description Porto's ...
- jQuery基础学习8——层次选择器next()和prev()方法
$('.one + div').css("background","#bbffaa"); //和next()方法是等价的,前后关系,和prev()方法是对立的 ...
- 48种CIFilter
48种CIFilter CIAdditionCompositing //影像合成 CIAffineTransform //仿射变换 CICheckerboardGe ...