MySQL binlog的格式解析
我搜集到了一些资料,对理解代码比较有帮助。
在头文件中binlog_event.h中,有描述
class Log_event_header
class Log_event_footer
参见【Mysteries of the Binary Log Presentation.pdf】
代码见【mysql-5.7.6-m16_src.zip】
MySQL binlog头4个字节:BINLOG_HEADER = b'\xfe\x62\x69\x6e'
然后我们就可以一个Event,一个Event的读取了(格式基本就是一段一段的了。)
用Python解析Event header
struct.unpack("=IBIIIH", header), 得到的分别是timestamp, typecode, server_id, event_len, next_pos, flasg
查看当前binlog的设置
show variables like '%log%';
set global binlog_format='row' ; 'statement' or 'mixed'
binlog格式解析相关的文章和代码:
http://www.tuicool.com/articles/6RvUnqV
http://www.oschina.net/code/snippet_915111_16360
http://www.xcoder.cn/html/Database/mysql/2013/0526/9191.html
http://blog.csdn.net/wyzxg/article/details/7412777
【解析binlog格式,网上能找到有用的文章并不是很多,代码就更少了,我这份代码可以供大家参考。】
https://github.com/healerkx/PySQLKits/tree/master/scripts/mysqlbinlog
细节
1. Decimal在binlog中的的存储格式:
我写到field_descriptor.py里面的 decimal_descriptor, parse()函数, 时间久了,以后我再更新它的解析细节描述。
MySQL binlog的格式解析的更多相关文章
- Mysql Binlog 三种格式介绍及分析
一.Mysql Binlog格式介绍 Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的sql都会记录在 ...
- Mysql Binlog三种格式详细介绍
一.MySQL Binlog格式介绍 mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 查看binlog的格式的脚本: 二.binlog 的不同模式有什么区别 ...
- Mysql Binlog三种格式介绍及分析【转】
一.Mysql Binlog格式介绍 Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的sql都会记录在 ...
- MySQL Binlog三种格式介绍及分析
Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的sql都会记录在binlog中. 优点:不需要记录每一行的变化,减 ...
- Mysql Binlog日志详解
一.Mysql Binlog格式介绍 Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的sql都会记录在 ...
- MySQL基于ROW格式的数据恢复
大家都知道MySQL Binlog 有三种格式,分别是Statement.Row.Mixd.Statement记录了用户执行的原始SQL,而Row则是记录了行的修改情况,在MySQL 5.6以上的版本 ...
- Mysql binlog二进制日志
Mysql binlog日志有三种格式,分别为Statement,MiXED,以及ROW! 1.Statement:每一条会修改数据的实际原sql语句都会被记录在binlog中. 优点:不需要记录每一 ...
- MySql binlog(理论篇)
1.什么是binlog? binlog日志用于记录所有更新了数据的sql语句或保存被修改的记录Row: 有了binlog,可以用于实时备份,master/slave主从同步: 在5.0版本前支持文本格 ...
- MySQL binlog格式解析
MySQL binlog格式解析 binlog想必大家都不陌生,在主从复制或者某些情况下的数据恢复会用到.由于binlog是二进制数据,要查看一般都借助mysqlbinlog工具.这篇笔记分析了b ...
随机推荐
- C++注意事项
1.static和const不能同时修饰类的成员函数(static int getde()const;) 分析:原因在于const会在函数中添加一个隐式参数const this*,而static是没有 ...
- system_call中断处理过程分析
本文所有的分析内容都是基于Linux3.18.6内核,鉴于对应不同内核版本,系统调用的实现不相同.若需要分析其他版本内核的系统调用的实现过程,请谨慎参考. system_call函数的功能是用来响应外 ...
- 浅谈fls3的一个压缩问题
昨天,用fis3压缩优化,在命令行运行命令的时候,出现了一个报错信息. not a PNG file. 查了很多资料,没找到解决方案,终于在github上提问,有正主回答: 是由于有些图片的后缀是通过 ...
- Cocos2dx对精灵的优化
cocos2dx针对游戏设计的不同方面会有不同的优化方案,可以对声音,对内存,对图片格式,对色彩等等进行优化.有关这些方面的方法请大家查找其他的文章.我今天要说的是如何对精灵进行优化,程序中我们用到的 ...
- PowerDesigner自增列问题
- CvMat结构
一.创建矩阵的方式: 1.cvCreateMat(int rows,int cols,int type),Type可以使任何预定义类型.Type的写法规则:CV_<bit_depth>(S ...
- python 模拟用户登录代码
需求:输入用户名,判断用户是否被锁定,锁定则退出,否则进入密码验证,输入三次错误密码之后此用户被锁定. userlist.txt里,用":"将用户名.密码.状态码分开: [root ...
- 《C专家编程》第一章——C:穿越时空的迷雾
这一章讲的是C语言的发展史,包括它是多么不经意的诞生,而后又经历了早期C.K&C.ANSI C的各种阶段,直到它现在形成的这个样子.C语言从来不是一门完美的语言,所以它一直在发展,直到今日,它 ...
- ubuntu 配置vim(vimrc)
打开终端:ctrl+alt+t 进入vim文件:cd /etc/vim 打开vimrc文件:sudo gedit vimrc 然后在行末if语句前加上下面的内容," 这个符号为注释,后面内 ...
- Android——播放器和图片轮播
layout文件: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:an ...