mysql学习之binlog

mysql   Binary Log也就是常说的bin-log,,是mysql执行改动产生的二进制日志文件,其主要作用有两个:

* 数据恢复

* 主从数据库。用于slave端执行增删改,保持与master同步。

如何查看bin_log是否打开,执行以下sql语句:

      show variables like 'log_bin'

如果值为on,则表示bin_log。如果为off,则需要通过以下方式打开:

找到my.ini配置文件,找到log_bin,去掉前面的注释,然后加上log_bin=“mysql_log_bin”.

mysql会在名字后面自动加上6位编码,从000001开始,按上面的例子,文件名称为mysql_log_bin.000001,mysql_log_bin.000002,mysql_log_bin.000003...........

如何查看这些文件呢?bin_log是二进制文件,因此这些文件是无法用记事本打开的。可在客户端执行以下sql进行查看,show binlog events in  mysql_log_bin.000001'.

结果当中有log_name,pos,event_type,server_id,end_log_pos,info等字段。通过info字段能清晰的看出都执行了那些操作。那有人问,你怎么知道最后操作的文件时000001呢?可以通过以下命令来查看最后一个bin_log的日志文件:show master status,其中的File字段显示的就是最后一个日志文件。


接下来讲一下如何利用bin_log恢复数据。

恢复数据主要使用mysqlbinlog工具,各位看官如果没有可自行下载。

mysqlbinlog可以执行很多命令,具体命令参考mysqlbinlog --help。这里着重讲一下恢复数据。

上面介绍了如何查看文件,通过文件中可以找到每条sql语句执行的位置即position,使用

mysqlbinlog --start-position=4 --stop-position=119  mysql_log_bin.000002|mysql -u root -p 

命令可恢复指定行的sql语句,that is all。

最后说一些bin_log常用操作

1.flush logs  启用新的日志文件,一般在备份完数据库之后执行

2.reset  master  清空现有所用的bin_log文件

你可能感兴趣的:(mysql学习之binlog)