MySQL二进制日志(binlog)开启、查看、截取

mysql二进制日志记录了数据库所有变更类的操作日志主要有2个作用:

MySQL主从配置
数据恢复

在这里插入图片描述

参数介绍

server_id=3
log_bin=/data/binlog/mysql-bin:

/data/binlog:提前定制好的目录,而且要有mysql.mysql的权限
mysql-bin:二进制日志文件名的前缀

binlog_format=(row、statement、mixed)

statement:SBR,语句模式记录日志,做什么命令,记录什么命令.
可读性较强,对于范围操作日志量少,但是可能会出现记录不准确的情况:insert into  xx values (1,'sa',now()).
row		 :RBR,行模式,数据行的变化。可读性较弱,对于范围操作日志大,不会出现记录错误.对高可用环境中的新特性要依赖于RBR(5.7版本默认)
mixed	 :MBR,混合模式

开启binlog

在mysql中binlog默认是不开启的。在mysql的配置文件mysqld模块下追加以下:

[mysqld]
server_id=6 (1~65535)
log_bin=/data/binlog/mysql-bin
binlog_format=row 
sync_binlog=1	//每次事务提交都立即刷写binlog到磁盘

创建目录和授权:

[root@db]# mkdir -p /data/binlog/
[root@db]# chown -R mysql.mysql /data

重启mysql生效:

/etc/init.d/mysqld restart

binlog管理

二进制日志的最小单元为事件(event),对于DDl语句来说每执行一个语句就是一个事件,而对于DML语句一个事务则包括了多个语句,比如从开启事务(begin)到提交事务(commit)的过程就是一个事件。
查看二进制日志位置:

mysql> show variables like '%log_bin%';
//flush logs:每执行一次就多一个日志

查看所有已存在的二进制日志:

show binary logs;

查看二进制日志事件:

mysql> show binlog events in 'mysql-bin.000004' limit 5;

在打印出来的信息中可以看到event事件的开始和结束号码,它可以方便我们从日志中截取想要的日志事件。
查看二进制日志内容:

[root@db ]# mysqlbinlog mysql-bin.000005
[root@db ]# mysqlbinlog --base64-output=decode-rows -vvv mysql-bin.000004

截取二进制日志:

[root@db ]# mysqlbinlog --start-position=219 --stop-position=335 mysql-bin.000004 >/tmp/a.sql

猜你喜欢

转载自blog.csdn.net/nmb_jiang/article/details/105436501