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.000001‘from 245 show binlog events in ‘mybinlog.000001‘limit 3 show binlog events in ‘mybinlog.000001‘limit 2,5 show binlog events in ‘mybinlog.000001‘from 245 limit 10 show binlog events in ‘mybinlog.000001‘from 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;