MySQL日志文件配置之二

本博客原文请参考:http://zhuqiuhui.space/Blogs/2017/03/mysql-log-configuration-2.html

接着文章MySQL日志文件配置的分析,本文主要对mysql中的二进制日志文件怎么查看进行展开。

一、mysql日志文件配置

常用的mysql日志类型有:
      • 错误日志:log-error
      • 查询日志:general_log_file
      • 慢查询日志:slow_query_log_file
      • 二进制日志:log-bin
在my.cnf的详细配置如下图,注意变量的弃用问题!

二、查看mysql二进制日志的两种方式

  1. 使用show binlog events方式可以获取当前以及指定binlog的日志,不适宜提取大量日志。
  2. 使用mysqlbinlog命令行提取(适宜批量提取日志)。

2.1 mysqlbinlog命令提取

该命令的查看比较容易,一般形式如下:
mysqlbinlog mysql-bin.000001
有可能以后显示的内容出现乱码,这主要针对于 “ binlog_format=row ”的模式时候,直接显示为base64编码格式,要生成常规的sql语句,可使用如下命令即可显示出正常语句了。
mysqlbinlog --base64-output=decode-rows -v mysql-bin.000001
有时也可以把二进制文件转化为utf8格式的文件来直接查看,可使用命令:

mysqlbinlog --database=mybatisTest --set-charset=utf8 mysql-bin.000001 > test.sql 

2.2 show binlog events方式

1. 查看所有二进制日志文件及其大小:

show binary logs;

2. 查看当前二进制日志文件:

show master status;

3. 默认查看当第一个二进制日志文件:



4.查看指定二进制日志文件(输出格式按行)



备注:若出现info列中没有sql语句的情况,该模式可能处于“基于行的复制(row-based replication, RBR)”模式中,可设置命令:
set binlog_rows_query_log_events=ON;
binlog_rows_query_log_events (5.6.2引入)只作用于RBR格式,默认不启用,如果启用,会把用户写直的原生态DML操作记录到binlog中。

5.查看指定二进制日志文件(输出格式按列,其中\G参数,将输出按列显示)


6.MySQL binlog操作事件类型

(1)QUERY_EVENT:以文本的形式来记录事务的操作,QUERY_EVENT类型的事件通常在以下几种情况下使用:
                                             ——事务开始时,执行的BEGIN操作
                                             ——STATEMENT格式中的DML操作
                                             ——ROW格式中的DDL操作
(2)FORMAT_DESCRIPTION_EVENT:binlog文件中的第一个事件,该事件只会在binlog中出现一次,mysql会根据FORMAT_DESCRIPTION_EVENT的定义来解析其它事件,它通常指定了MySQL Server的版本、binlog的版本、binlog文件的创建时间。
(3)ROWS_EVENT:对于ROW格式的binlog,所有的DML语句都是记录在ROWS_EVENT中,ROWS_EVENT分为三种:WRITE_ROWS_EVENT、UPDATE_ROWS_EVENT、DELETE_ROWS_EVENT,分别对应insert,update和delete操作。
                                            ——对于insert操作,WRITE_ROWS_EVENT包含了要插入的数据
                                            ——对于update操作,UPDATE_ROWS_EVENT不仅包含了修改后的数据,还包含了修改前的值
                                            ——对于delete操作,仅仅需要指定删除的主键(在没有主键的情况下,会给定所有列)
备注:对于QUERY_EVENT事件,是以文本形式记录DML操作的,而对于ROWS_EVENT事件,并不是文本形式,所以在通过mysqlbinlog查看基于ROW格式的binlog时,需要指定-vv --base64-output=decode-rows。
(4)XID_EVENT:该事件记录了该事务的ID,在MySQL进行崩溃恢复时,根据事务在binlog中的提交情况来决定是否提交存储引擎中状态为prepared的事务
(5)STOP_EVENT:当MySQL数据库停止时,会在当前的binlog末尾添加一个STOP_EVENT事件表示数据库停止。
(6)GTID_LOG_EVENT:在启用GTID模式后,MySQL实际上为每个事务都分配了个GTID,事物是全局唯一的,且一个事务对应一个GTID,一个GTID在一个服务器上只执行一次,避免重复执行导致数据混乱或者主从不一致。
(7)Table_map_log_event:它保存了本次DML操作对应的table_id、数据库名、表名、字段数、字段类型等。

7.清空二进制日志文件

reset master;

8.关闭二进制日志文件

彻底禁用MySQL日志,修改/etc/my.cnf文件,找到log-bin相关选项,将其注释掉即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bboyzqh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值