linux下查看mysql二进制日志_MySQL日志——配置与查看二进制日志

二进制日志的文件的作用     mysql二进制日志文件用来记录所有用户对数据库操作,即记录用户对数据库操作的sql语句。如果有此文件,当数据库发生意外时,可以通过此文件查看到用户在此文件记录的时间段内用户所做的操作,再和数据库备份配合使用,即可再现用

二进制日志文件的配置操作

二进制日志文件包括了  hostName-bin.00000x  以及 hostName-bin.index,Index这个是所有的二进制日志的索引文件。

通过修改my.cnf文件的方式来开启二进制日志了。只要添加log_bin就可以开启,其他的都使用默认。例如:

44775a27ca9c54db626f4e8b7877c893.png       

也可以通过set命令修改以实现立即生效而不用重启服务

SET  @@global.log_bin=1;

查看二进制日志

1.查看和分析二进制日志的结果

二进制日志文件中就是二进制的数据,因此不能直接使用文本命令或工具查看,需要使用专门的工具。mysql自带的mysqlbinlog就是一个用于查看二进制日志文件的工具,使用方式如下:

mysqlbinlog  hostName-bin.00001   即直接将二进制日志文件指定给该命令即可。

二进制日志中的每条记录是从一个 “at 数字”开始到一个“at 数字”结束,之间是一条二进制日志记录。每条记录的end_log_pos的值与记录结束的at后的值是一致的。

例如:

2ab82698459d3f8a4d2ceed2c8bc5111.png

1、先创建一个数据库test_bin create database test_bin;use test_bin;create table test_bin_table( id int);insert into test_bin_table values(1),(2),(3);select * from test_bin_table;+------+ | id   | +------+ |    1 | |    2 | |

2.二进制日志的格式

show variables  like‘%binlog%’; 结果中的binlog_format就是用来更改二进制日志的格式,默认为STATEMENT,这种默认格式中的二进制日志所记录的是具体下达的修改数据的sql语句。还有两种格式分别是ROW或MIXED,ROW的格式是事务性或称为行的二进制日志,会将当前对数据的操作以事务的方式记录下来。MIXED是基于ROW的,有可能是STATEMENT格式,也就是一种混合格式,但以ROW格式为主;例如数据库中有的表使用MYISAM引擎,有的表使用Innodb引擎,那么MYISAM引擎的就会使用STATEMENT格式。

如果是replication环境,那么binlog_format建议设置为ROW格式,即以事务的格式来记录,并且replicaton环境要使用事务型引擎而不要使用非事务型引擎。

例如:set  global binlog_format=ROW  或 set binlog_format=ROW  (只设置当前会话的)

cda55a508211ac4f9b9ea2aac5b055f9.png

修改格式后的二进制日志不会创建新的文件也不会影响之前的日志,会在当前日志文件中继续按照新的格式添加二进制日志。如果是ROW格式,那么就是会将一个事务以二进制形式写到日志中,而不再是默认STATEMENT那种格式中是讲sql语句以及相关信息存储在二进制日志中,ROW格式的是无法看懂的,即使使用mysqlbinlog工具也无法可读,都是一些字母。如果要查看ROW格式的日志那么需要mysqlbinlog 使用“-v”选项才可以 :  mysqlbinlog  -v localhost-bin.00002   这样会将其中对事务的二进制描述转换为类似的SQL的形式展示出来。

00f3a60330e80181f8a82a44cbe90c7d.png

二进制日志对于触发器所执行的操作也会记录下来,反正所有对数据的修改都会记录。但是如果二进制日志格式为STATEMENT格式则不会记录触发器所执行的操作,因为触发器是编译后的SQL语句,而STATEMENT只记录的是SQL语句。因此如果是replicaton环境,则记得要修改二进制日志格式为ROW,因为ROW格式记录的最完整。或者最好不要使用触发器、存储过程这些东西。

3.mysqlbinlog使用进阶         介绍mysqlbinlog的可用选项,如下:

Ø  --start-datetime=name

Ø  --stop-datetime=name

Ø  --j或--start-position=#

Ø  --stop-position=#

以上参数分为两组,可以以起止时间方式或起止编号的方式查看某一段二进制日志。如果数据库非常繁忙,那么每秒都会产生非常多的二进制日志而start/stop-position的精确度只能到秒,因此可以通过start-position和stop-position的方式以某个操作的索引编号方式来查看。一个position段就是一个事务的操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值