mysql 原理 ~ binlog
一 简介:我们会持续对binlog进行分析,但是不深入代码
二 版本 5.6
格式
GTID和传统格式
传统格式
一 binlog针对具体事务注意点-1
1 update会记录更改前和更改后所有列的值
2 delete会记录删除前所有列的值
3 insert会记录插入的具体sql
4 ddl语句只会记录语句本身,不会记录影响行
5 dcl语句不会记录
6 特殊类型
1 trigger 1 记录产生数据更新的sql语句。对于调用触发器后产生的数据更新,并不记录到binlog中
2 function 如果函数中有数据改变,那函数的调用语句(包括select语句)将记录到binlog中
3 event event触发事件后,更新数据的sql语句将记入binlog,event功能默认是关闭的。在master上定义event后,slave同步event并将其标示为SLAVESIDE_DISABLED,这里要特别注意
总结:1 记录创建语句本身 2记录执行过程中所生成的语句,并不会记录列所有值
7 特殊语句
create table as select * from 是按照insert单条记录记录的,但是属于一个事务
GTID
1 GTID格式会在binlog开头记录之前事务执行过的gtid总和,便于进行扫描
2 5.7的GTID会在binlog每个事务中记录一组基于并行复制的值
3 GTID 每个事务都有唯一的GTID标识
二 binlog针对事务记录点-2
1 记录表信息
1 server_id
1 binlog执行事务所在数据库的server_id,
2 哪怕在多级复制中级联生成的binlog,集群server_id不会改变,一定是master的server_id
3 双主架构中,如果判断出是自己的server_id,就不会执行了,解决了不停执行事务的死循环
2 CRC32 binlog_checksum加密协议,MGR架构不支持
3 Table_map 目标的库+表
4 Table_id 目标表的table_id
5 type_evnet 对应 delete_event,update_event,insert_event 删 更新和插入(binlog_row_image=FULL(记录全部字段)=MINIMAL(记录关键字段)
6 具体的事务
包含具体的值,详见上述
7 Xid event 表示事务被正确的提交了
三 恢复数据场景
DML场景
1 delete-table全表/部分 数据
2 update-table全表/部分 数据
解决办法 根据binlog恢复
DDL场景
1 truncate/drop table
2 modify tale
解决办法 根据历史备份+binlog恢复
通用解决办法 根据最新的历史备份+之后的binlog进行恢复,然后数据导入
四 备份
本地binlog默认保留7天,利用 binlog_server进行异地binlog备份
六 解析工具
canal以及扩展otter 程序持续读取binlog的工具,非常普遍的应用
mysqlbinlog 系统自带的分析binlog工具,进行需求统计和回滚binlog
binlog2sql/MyFlash 第三方分析并回滚binlog工具
七 应用场景
1 为从库和其他应用比如(canal)提高操作实时解析同步功能
2 历史数据进行恢复(全量binlog可以保证能恢复任意时间点)
3 历史数据进行查看(全量binlog可以查看任何时间段的数据)
4 对库/表进行操作统计(1 排查主从延迟问题 2 排查高IO服务问题)
mysql 原理 ~ binlog的更多相关文章
- 不小心删除数据--利用MySQL的binlog恢复数据
MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个: * 数据回复 * 主从数据库.用于slave端执行增删改,保持与maste ...
- MySQL基于binlog主从复制
MySQL复制介绍 默认情况 下复制是异步进行的,从库也不需要一直连接到主库来同步数据 MySQL复制的数据粒度可以是主实例上所有的数据库,也可以是指定的一个或多个数据库 ,也可以是一个数据库里的指定 ...
- canal —— 阿里巴巴mysql数据库binlog的增量订阅&消费组件
阿里巴巴mysql数据库binlog的增量订阅&消费组件canal ,转载自 https://github.com/alibaba/canal 最新更新 canal QQ讨论群已经建立,群号 ...
- 阿里巴巴开源项目: canal 基于mysql数据库binlog的增量订阅&消费
背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增 量变更,不过从2010年开始,阿里系公司开始逐步的 ...
- mysql利用binlog恢复数据详细例子
模拟数据恢复的案例 有些时候脑瓜就会短路,难免会出错 场景:在生产环境中,我们搭建了mysql主从,备份操作都是在从备份数据库上 前提:有最近一天或者最近的全备 或者最近一天相关数据库的备份 最重要的 ...
- 阿里巴巴开源项目: 基于mysql数据库binlog的增量订阅&消费
背景 早期,阿里巴巴B2B公司因为存在杭州和美国双机房部署,存在跨机房同步的业务需求.不过早期的数据库同步业务,主要是基于trigger的方式获取增量变更,不过从2010年开始,阿里系公司开始逐步的尝 ...
- 《MySQL数据库》MySQL ERRORLOG,BINLOG,SLOWLOG日志详解
前言 MySQL 经常出现启动错误或者执行错误等等,这个时候我们需要查询error日志 在数据库使用中,经常会出现需要恢复数据的情况,MySQL如果需要恢复数据的话需要开启binlog(二进制日志). ...
- 监听MySQL的binlog日志工具分析:Canal
Canal是阿里巴巴旗下的一款开源项目,利用Java开发.主要用途是基于MySQL数据库增量日志解析,提供增量数据订阅和消费,目前主要支持MySQL. GitHub地址:https://github. ...
- MySQL的binlog有啥用?谁写的?在哪里?怎么配置
目录 一.唠嗑 二.什么是bin log? 三.它在哪里? 四.bin log的相关配置 五.binlog 有啥用? 六.超有用的参数 sql_log_bin 七.未来几篇文章 推荐阅读 一.唠嗑 文 ...
随机推荐
- BZOJ1001[BeiJing2006]狼抓兔子——最小割
题目描述 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形: ...
- BZOJ4891 TJOI2017龙舟(Polllard-Rho)
对给定模数分解质因数后约分即可.依然常数巨大过不了. #include<iostream> #include<cstdio> #include<cmath> #in ...
- JavaScript--XML DOM 总结
XML DOM 2018-09-04 XML简介 1.什么是XML XML 指可扩展标记语言(EXtensible Markup Language) XML 是一种标记语言,很类似 HTML XML ...
- LightOJ - 1074 Extended Traffic(标记负环)
题意:有n个城市,每一个城市有一个拥挤度ai,从一个城市u到另一个城市v的时间为:(au-av)^3,存在负环.问从第一个城市到达第k个城市所话的时间,如果不能到达,或者时间小于3输出?否则输出所花的 ...
- Fire Net ZOJ - 1002
题意: 一个n * n 的棋盘 上面有些障碍物 放棋子 棋子不能在同一行 同一列 但可以在同一行或同一列隔着障碍物放 这题与poj1321 的思想差不多 对于一个位置 有两种状态放还是不放 参数i ...
- FieldGroup绑定的日期类型存储格式的问题
问题 日期存储的时候,当前数据库中存储格式为 "2017-9-5 0:00:00", 而我实现了以后,看到数据库的存储格式为 "Mon Sep 04 00:00:00 C ...
- 自学Aruba1.4-Aruba体系结构-产品线
点击返回:自学Aruba之路 1. Aruba产品线 IP switches: 1500.2500.3500 Controllers:7200 .70x0 Series.7005 Meridian:基 ...
- java freemarker导出word时添加或勾选复选框
最近项目导出word碰到一个需求,要求根据数据动态的决定word里的复选框是否勾选, 公司导出word用的是freemarker,相比较其他技术,freemarker可以很容易的控制输出样式, 在wo ...
- 【BZOJ4555】求和(多种解法混合版本)
[BZOJ4555]求和(多种解法混合版本) 题面 BZOJ 给定\(n\),求 \[f(n)=\sum_{i=0}^{n}\sum_{j=0}^{i}S(i,j)\times 2^j \times ...
- 【CF961G】Partitions(第二类斯特林数)
[CF961G]Partitions(第二类斯特林数) 题面 CodeForces 洛谷 题解 考虑每个数的贡献,显然每个数前面贡献的系数都是一样的. 枚举当前数所在的集合大小,所以前面的系数\(p\ ...