mysql log bin 分析_mysqlbinlog 工具分析binlog日志

MySQL的binlog 日志对于生产环境很是有用,任什么时候间对数据库的修改都会记录在binglog中;当数据发生增删改,建立数据库对象都会记录到binlog中,数据库的复制也是基于binlog进行同步数据;mysql

和SQL SERVER 数据库开启完整模式的原理同样,每一次的数据的变更都会记录在案;(对数据库的select,show这些操做不会记录在binlog)sql

下面介绍mysqlbinlog工具查看 二进制日志内容;数据库

检查工做:app

1,查看是否开启binlog工具

show variables like 'log_bin';

afedae8c915db727725d6a8b54fd4edb.png

ON 表明开启;OFF 表明没有开启;编码

若是没开启检查my.cnf文件,个人binlog位置以下:spa

18e16739d43e4adb4fa2f0cb82760cbe.png

log_bin = /mysql/log//mysql-bin3d

2,查看binlog日志

show binary logs

3d48dc98cb5435063015ad01a0a71643.png

可见,binlog已经开启了;code

示例:

01- 建立数据库db;

create database db default character set utf8mb4;

02- 建立表t1

usedb;create table`t1` (

`id`int(11) default null,

`name`varchar(20) default null) engine=innodb default charset=utf8mb4;

03- 插入数据

insert into t1(id,name) select 101,'tome101';insert into t1(id,name) select 102,'tome102';insert into t1(id,name) select 103,'tome103';insert into t1(id,name) select 104,'tome104';insert into t1(id,name) select 105,'tome105';insert into t1(id,name) select 106,'tome106';insert into t1(id,name) select 107,'tome107';insert into t1(id,name) select 108,'tome108';

04- 更新数据

update t1 set name='jack101' where id=101;update t1 set name='jack103' where id=103;update t1 set name='jack105' where id=105;

05- 删除数据

delete from t1 where id=102;delete from t1 where id=104;delete from t1 where id=106;

查看当前mysqlbinlog位置

which mysqlbinlog

913eae01680a53205580fc4504059518.png

我是二进制自定义安装的mysql 路径不是默认位置;

完整路径为/mysql/app/mariadb/bin/mysqlbinlog

找到binlog位置,个人binlog位置以下:

ea05db77479cc96fd0782054226fdf8b.png

把最后一个 binlog : 拷贝到 /tmp 目录下:

171b7989fa5ca0d0ef57ad3f08f32b81.png

查看binlog 日志内容:

/mysql/app/mariadb/bin/mysqlbinlog --no-defaults --database=db --start-datetime='2019-04-11 00:00:00' --stop-datetime='2019-04-11 15:00:00' mysql-bin.000007 | more

6186c4bb95cd20dca91de06f2b66ee80.png

发现BINLOG 处的内容咱们看不明白。。。^_^

增长 --base64-output=decode-rows –v 选项解析

(base64-output,能够控制输出语句输出base64编码的BINLOG语句;decode-rows:选项将把基于行的事件解码成一个SQL语句)

/mysql/app/mariadb/bin/mysqlbinlog --no-defaults --database=db --base64-output=decode-rows -v --start-datetime='2019-04-11 00:00:00' --stop-datetime='2019-04-11 15:00:00' mysql-bin.000007 | more

75b018a30675d674d3a61e0c02306f8b.png

变成人类能够读懂的SQL语句了;

PS: 能够把binlog解析后的内容放到一个文件后,在分析,利用以下脚本

/mysql/app/mariadb/bin/mysqlbinlog --no-defaults --database=db --base64-output=decode-rows -v --start-datetime='2019-04-11 00:00:00' --stop-datetime='2019-04-11 15:00:00' mysql-bin.000007 >/tmp/binlog007.sql

也能够根据精确位置 -- start-position   --stop-position 进行解析;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值