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理解上在看过博客园各个大神 ...
随机推荐
- hdu1792 水题
最近转到vim上来了,用vim编写代码,用gcc编译,用gdb调试.这是用vim做的第一道题,纪念下.题目很水,就不说了. /* * Author : ben */ #include <cstd ...
- dbms_file_transfer使用简介
dbms_file_transfer这个包可以在两个位置传输文件,分别可以有以下位置: a 从一个asm diskgroup传输到另外一个asm diskgroup b 从一个asm diskgrou ...
- Javascript——说说js的调试
最近比较吐槽,大家都知道,现在web前端相对几年前来说已经变得很重了,各种js框架,各种面对对象,而且项目多了,就会提取公共模块. 这些模块的UI展示都一样,不一样的就是后台逻辑,举个例子吧,我们做企 ...
- bzoj 2595 [Wc2008]游览计划(斯坦纳树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2595 [题意] 给定N*M的长方形,选最少权值和的格子使得要求的K个点连通. [科普] ...
- CSS布局基础
(初级)css布局 一.单列布局1.基础知识块级元素 div p ul li dl dt 行级元素 img span input strong同一行显示.无换行2.盒子模型盒子模型 (边框border ...
- MySQL 主从架构配置详解
无论是哪一种数据库,数据的安全都是至关重要的,因此熟练掌握数据库的安全备份功能,是作为开发人员,特别是后端开发人员的一项必备技能.MySQL 数据库内建的复制功能,可以帮助我们对数据进行异地备份,读写 ...
- PopupWindow添加动画效果
1.定义PopupWindow弹出与消失的两个动画文件,放在anim文件夹下 popup_enter.xml <?xml version="1.0" encoding=&qu ...
- Delphi异形窗口之PNG
//1.单元内容 unit UnitAlienForm; interface uses Windows, Forms, Classes, Graphics; //从文件加载PNG procedure ...
- ocp 1Z0-047 61-130题解析
61. Evaluate the following SQL statements that are issued in the given order:CREATE TABLE emp(emp_no ...
- ocp 1Z0-047 1-60题解析
1. You need to load information about new customers from the NEW_CUST table into the tables CUST and ...