mysql二进制日志

Posted coshaho

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql二进制日志相关的知识,希望对你有一定的参考价值。

mysql二进制日志称为binlog,记录了数据库修改数据的操作,可以用作数据恢复。

binlog有三种记录方式

1、statement

记录修改数据的原始sql,IO量较小。sql中存在使用user()等依赖运行环境的函数时,可能导致数据恢复不正确。

2、row

记录每行数据的修改动作,IO较大,准确性最高,生产环境推荐使用这种模式。

3、mixed

上述两种模式混合使用。

binlog参数设置

1、log_bin

只读参数,只能在my.ini(my.cnf)中设置,log_bin的值为二进制文件名字,存在log_bin配置则表示开启二进制文件,不存在则表示关闭。

2、sql_log_bin

会话界别变量,ON表示当前会话会记录binlog,OFF表示当前会话不记录binlog。

3、binlog_format

binlog的三种记录方式。

4、max_binlog_size

binlog日志文件大小,以字节为单位,日志超过此大小则创建新的binlog日志,文件名后缀自动加1。

5、sync_binlog

1,表示每一次事务提交之后,都会立即将内存中的二进制日志同步到磁盘中的二进制日志文件中。

0,表示由mysql自己决定什么时候写文件。

N,表示提交N次事务后,写文件。

显然,0性能最高,安全性最差;1性能最差,安全性最高。

二进制日志查询

1、查看二进制日志文件列表

show master logs;
show binary logs;

2、查看当前正在使用的二进制日志文件

show master status;

3、查看二进制日志文件中的事件(查看binlog内容)

show binlog events
show binlog events in mybinlog.000001
show binlog events in mybinlog.000001from 245
show binlog events in mybinlog.000001limit 3
show binlog events in mybinlog.000001limit 2,5
show binlog events in mybinlog.000001from 245 limit 10
show binlog events in mybinlog.000001from 245 limit 4,20

4、mysqlbinlog命令

(1)文件系统中使用mysqlbinlog命令查看对应的二进制日志:mysqlbinlog mybinlog.000001

(2)从指定位置开始查看二进制日志:mysqlbinlog --start-position 215 mybinlog.000001

(3)指定从哪个位置开始,到那个位置结束,查看这之间的二进制日志文件:mysqlbinlog --start-position 215 --stop-position 324 mybinlog.000001

(4)指定的时间开始查看,比如,查看2017年6月4日10点40以后的日志:mysqlbinlog --start-datetime "2017-6-4 11:40:00" mybinlog.000001;

(5)指定结束时间:mysqlbinlog --start-datetime "2017-6-4 11:40:00" --stop-datetime "2017-6-4 12:55:00" mybinlog.000001;

以上是关于mysql二进制日志的主要内容,如果未能解决你的问题,请参考以下文章

MySQL二进制日志功能介绍

mysql 二进制日志binary log操作简单命令

php如何打开在mysql中取出的二进制数据

怎么查看mysql 二进制日志

argparse 代码片段只打印部分日志

《MySQL系列-InnoDB引擎19》文件-日志文件-二进制日志