Mysql基础之你我他(二)——Binlog

一、Binlog简介:

Binlog是二进制日志文件,用于记录mysql的数据更新或者潜在更新(比如DELETE语句执行删除而实际并没有符合条件的数据),在mysql主从复制中就是依靠的binlog。可以通过语句“show binlog events in 'binlogfile'”来查看binlog的具体事件类型。binlog记录的所有操作实际上都有对应的事件类型的,MySQL binlog的三种工作模式:

(1)Row level(用到MySQL的特殊功能如存储过程、触发器、函数,又希望数据最大化一直则选择Row模式)   

① 日志中会记录每一行数据被修改的情况,然后在slave端对相同的数据进行修改。   优点:不记录执行的sql语句上下文相关的信息,仅仅只需要记录那一条被修改。所以Row模式 的日志内容会记录下每一行数据修改的细节。不会出现某些特定的情况下的存储过程或函数,以及触发器的调用和触发无法被正确复制的问题

缺点:Row模式 所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样会造成binlog日志量会很大

(2)Statement level(默认)

② 每一条被修改数据的sql都会记录到master的bin-log中,slave在复制的时候sql进程会解析成和原来master端执行过的相同的sql再次执行。在主从同步中一般是不建议用statement模式的,因为会有些语句不支持,比如语句中包含UUID函数,以及LOAD DATA IN FILE语句等   优点:不需要记录每一行数据的变化,减少bin-log日志量,节约IO,提高性能。因为它只需要在Master上所执行的语句细节,以及执行语句的上下文的信息。

缺点:由于只记录语句,所以,在statement level下 已经发现了有不少情况会造成MySQL的复制出现问题,主要是修改数据的时候使用了某些指定的函数或者功能的时候会出现。

(3)Mixed(混合模式)   

③ 结合了Row level和Statement level的优点,同时binlog结构也更复杂。

二、如何查看与配置binlog格式?

① 通过命令行查看binlog_foramat

Mysql基础之你我他(二)——Binlog_第1张图片

② 通过配置文件查看(/etc/my.cnf) 

三、如何修改binlog格式?

① 通过命令行:set session binlog_format='MIXED';

② 通过修改/etc/my.cnf

四、如何查看binlog是否开启?

① 通过命令行:show variables like 'log_bin';

Mysql基础之你我他(二)——Binlog_第2张图片

需要关闭的话,set sql_log_bin=0,如果开启的话set sql_log_bin=1。

五、如何获取当前binlog当前文件列表 ?

show binary logs;

Mysql基础之你我他(二)——Binlog_第3张图片

六、如何查看Binlog存放位置?

① 在/etc/my.cnf可以查到:查看字段=log-bin
 ② 也可以使用命令行进行查询: show variables like 'log_%';

Mysql基础之你我他(二)——Binlog_第4张图片

 七、如何删除Binlog?

手动删除binlog,通过命令行。

Mysql基础之你我他(二)——Binlog_第5张图片

你可能感兴趣的:(mysql,数据库,dba)