Mysql 二进制日志 Mysql 服务层日志 mysql 二进制日志 慢查日志 通用日志 二进制日志:记录了所有对Mysql数据库的修改事件,包括增删改查事件和对表结构的事件 二进制日志的格式: show : show VARIABLES like 'binlog_format';(查看二进制日志格式) set : set SESSION binlog_format=statement;(设置位段的 5.7为row) 基于段的格式 binlog_format=STATEMENT (5.7之前默认使用的格式) 优点: 日志记录量相对较小,节省磁盘及网络I/O 缺点; 必须要记录上下文的信息 保证语句在从服务器上执行的结果在主服务器上相同 特定函数如 UUID(),user() 这样非确定性函数还是无法复制 可能造成MySQL复制的主备服务器数据不一致 基于行的格式 binlog_format=ROW show : show VARIABLES like 'binlog_format'; set : set session binlog_format=row; Row格式可以避免MySQL复制中出现得主从不一致问题 同一SQL语句修改了10000条数据的情况下,基于段的日志格式只会记录这个sql语句,而基于行的日志会有10000条记录分别记录每一行 的数据修改 *优点: 1.使mysql主从复制更加安全 2.对每一行数据对修改比基于段对复制高效,降低主从复制的时间 3.误操作而修改了数据库中的数据,同时有没有备份可以恢复时,我们可以通过分析二进制日志,对日志中记录的数据修改操作 做反向的处理方式来达到恢复数据的目的 *缺点: 1.记录日志量大。 show: show variables like 'binlog_row_image' binlog_row_image = [FULL|MINIMAL|NOBLOB](提供了三种日志方式) 混合日志格式 binlog_format=NIXED 特点 1.根据SQL语句由系统决定在基于段和基于行段日志格式中进行选择 2.数据量大小由所执行段sql语句决定 Mysql 存储引擎层日志 innodb重做日志,回滚日志等