5.2.1-企业级MySQL数据库SQL语言开发与应用实—MySQL二进制日志深入解析与应用—MySQL Binlog二进制日志介绍与3种工作模式
一、MySQL Binlog二进制日志
1、概述
这个文件记录了mysql数据库所有的dmL,ddl语句事件(不包括select),记录增删改操作,也可以记录SQL语句,也可以记录行变化记录还可以记录这些操作的时间。
比如: update itpux表set name= ' itpux' where id between 1 and 5;
记录:
1)可能是这条语句,
2)可能是记录5条数据的修改情况,
3)可能两个都同时记录。
2、MySQL三种日志的区别:
generallog: 记录数据库里面所有的SQL操作记录。 redoLOG: 只记录innodb存储引擎级的修改日志。 binlog: 只记录server层面内部的修改情况。-- select/show不记录
3、开启binlog二进制日志有什么好处?
(1)好处:以应用场景为说明
(1)MYSQL主从复制:通过binlog实现数据复制
(2)数据恢复:如宕机恢复,异常操作的恢复
(2)缺点:
大概损失1%左右的性能,占用空间。
4、MySQL binlog的三种工作模式
工作模式以参数binlog_ format为准:
(1)row level (默认级别: mysq15.7.6之后+8.0)
功能:日志中记录每一行数据修改的情况。 优点:可以更方便查看每一条数据修改的细节。 缺点:数据量比较大。 场景:希望数据最安全,复制强一致。
(2)statement level (默认级别: mysq15.7.6之前)
功能:记录每一条修改的SQL。 优点:解决了数据量比较大的问题I 缺点:容易出现主从复制不一致。 场景:使用mysql的功能比较少,又不使用存储过程/触发器/函数
(3)mixed (混合模式)
结合row level与statement level 的优点。但一般不使用。