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

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

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

       

mysql查看longblob二进制内容 mysql查看二进制日志_二进制

      


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

        SET  @@global.log_bin=1;



查看二进制日志

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

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

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



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

        例如:

       

mysql查看longblob二进制内容 mysql查看二进制日志_二进制日志_02


        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

       

mysql查看longblob二进制内容 mysql查看二进制日志_触发器_03



mysqlbinlog  -v localhost-bin.00002   这样会将其中对事务的二进制描述转换为类似的SQL的形式展示出来。

       

mysql查看longblob二进制内容 mysql查看二进制日志_二进制日志_04



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


        3.mysqlbinlog使用进阶

        介绍mysqlbinlog的可用选项,如下:

        Ø  --start-datetime=name

        Ø  --stop-datetime=name

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

        Ø  --stop-position=#

事务的操作。