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