MySQL binlog日志三种模式选择及配置

在认识binlog日志三种模式前,先了解一下解析binlog日志的命令工mysqlbinlog。mysqlbinlog工具的作用是解析mysql的二进制binlog日志内容,把二进制日志解析成可以在MySQL数据库里执行的SQL语句。binlog日志原始数据是以二进制形式存在的,需要使用mysqlbinlog工具转换成SQL语句形式。

mysql的binlog日志作用是用来记录mysql内部增删改等对mysql数据库有更新内容的记录(对数据库进行改动的操作),对数据库查询的语句如show,select开头的语句,不会被binlog日志记录,主要用于数据库的主从复制与及增量恢复。

案例:

在对数据库进行定时备份时,只能备份到某个时间点,假如在凌晨0点进行全备了,但是在中午12点出现故障需要恢复数据,使用0点的全备只能恢复到0点时刻的数据,难道0点到12点的数据只能丢失了吗?

这时就是体现binlog日志重要性的时候了,需要对binlog日志进行定时推送(一分钟一次或五分钟一次,时间频率视业务场景而定)完成增量备份。当出现故障时,可以使用定时备份和增量备份恢复到故障点时刻的数据。具体的恢复方案,这里不做简述,后面再写文章来讲解。

binlog日志三种模式

ROW Level

记录的方式是行,即如果批量修改数据,记录的不是批量修改的SQL语句事件,而是每条记录被更改的SQL语句,因此,ROW模式的binlog日志文件会变得很“重”。

优点:row level的binlog日志内容会非常清楚的记录下每一行数据被修改的细节。而且不会出现某些特定情况下存储过程或function,以及trigger的调用和触发器无法被正确复制的问题。

缺点:row level下,所有执行的语句当记录到日志中的时候,都以每行记录的修改来记录,这样可能会产生大量的日志内容,产生的binlog日志量是惊人的。批量修改几百万条数据,那么记录几百万行……

Statement level(默认)

记录每一条修改数据的SQL语句(批量修改时,记录的不是单条SQL语句,而是批量修改的SQL语句事件)。看上面的图解可以很好的理解row level和statement level两种模式的区别。

优点:statement模式记录的更改的SQ语句事件,并非每条更改记录,所以大大减少了binlog日志量,节约磁盘IO,提高性能。

缺点:statement level下对一些特殊功能的复制效果不是很好,比如:函数、存储过程的复制。由于row level是基于每一行的变化来记录的,所以不会出现类似问题

Mixed

实际上就是前两种模式的结合。在Mixed模式下,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种。

企业场景如何选择binlog的模式

1、 如果生产中使用MySQL的特殊功能相对少(存储过程、触发器、函数)。选择默认的语句模式,Statement Level。

2、 如果生产中使用MySQL的特殊功能较多的,可以选择Mixed模式。

3、 如果生产中使用MySQL的特殊功能较多,又希望数据最大化一致,此时最好Row level模式;但是要注意,该模式的binlog非常“沉重”。

查看binlog模式

mysql> show global variables like "%binlog_format%";
+---------------+-----------+
| Variable_name | Value    |
+---------------+-----------+
| binlog_format | STATEMENT |
+---------------+-----------+

配置binlog日志模式

vim my.cnf(在[mysqld]模块中配置)

log-bin = /data/3306/mysql-bin
binlog_format="STATEMENT"
#binlog_format="ROW"
#binlog_format="MIXED"

不重启,使配置在msyql中生效

SET global binlog_format='STATEMENT';

(0)

相关推荐

  • [MySQL]mysql binlog回滚数据

    [MySQL]mysql binlog回滚数据

  • 内部群炸了锅,隔壁同事真删库了啊。。

    事件起因 我们的系统中有数据导入的功能,可以把特定的格式的 excel 数据导入到系统中来. 由于客户电脑的文件比较多,很多文件的名字也比较相近,客户在导入 excel 时选错了文件. 这个错误的 e ...

  • MySql 三大日志:binlog、redo log 和 undo log

    Keeper导读:日志是mysql数据库的重要组成部分,记录着数据库运行期间各种状态信息.mysql日志主要包括错误日志.查询日志.慢查询日志.事务日志.二进制日志几大类.作为开发,我们重点需要关注的 ...

  • MySQL binlog日志操作详解

    MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的. bi ...

  • 销售外购机器设备的同时提供安装服务的四种模式选择

    一般纳税人销售外购机器设备的同时提供安装服务,根据国家税务总局公告2018年第42号,可以有四种模式的选择.分别是以销售货物为主的混合销售.以提供安装服务为主的混合销售.安装服务选择一般计税的货物和劳 ...

  • 财富自由之路的三种模式

    如何实现财富自由,获得"睡"后收入? <财富自由之路>这本书指出,人的时间有限,精力有限,实现财富自由,务必不能用时间.体力去大量付出换取回报,我们一定要找到一种模式, ...

  • 最赚钱的三种模式~~~️~~打板妖股(总...

    最赚钱的三种模式--- ️-~打板妖股(总龙头) ️~~参入主升浪(周线突破,首板涨停) ️~~低吸回调到位的分支龙头(低吸) 1.盯紧龙头,谁给买点买谁. 2.非龙头,放在备选栏,做好补买. 3.早 ...

  • Git Reset 三种模式

    有时候,我们用Git的时候有可能commit提交代码后,发现这一次commit的内容是有错误的,那么有两种处理方法:1.修改错误内容,再次commit一次 2.使用git reset 命令撤销这一次错 ...

  • MySQL安装的三种方式

    Mysql安装方式对比 安装方式 安装简易度 使用简易度 定制化程度 适合范围 rpm包安装 简单 简单 低 仅适合redhat/centos系列linux 二进制安装 安装简单,配置稍微复杂 中,需 ...

  • 技巧丨自动对焦的三种模式,你知道几个?

    我想大多数刚开始接触单反的朋友,拍出来的照片可能都会有一些模糊不清晰的感觉:又或者是拍照的时候镜头总是吱吱作响,老是按不下快门. 出现这里中情况最重要的原因就是可能你们还不懂如何使用相机的对焦. 要知 ...

  • 班级管理的三种模式

    班级工作向来是学校管理工作的重中之重.班级管理质量的好坏直接影响着学校教育教学的效果.总体来说目前有三种班级管理模式,和大家探讨. 一."看管"式 "看管式"管 ...

  • 分时买点的三种模式:低吸、半路、打板,哪种确定性高风险小(图解)

    先抛出一个问题:分时线有没有战法?你的模式分时线买点是什么?成功率如何?成功或者失败的原因是什么? 下面先说几个核心思想: 1.分时线是最直观的买卖依据:所有的买卖都是基于分时线进行的:得分时线者得超 ...

  • 抓涨停打板吃大肉的三种模式(1):赌板(图解)

    抓涨停打板吃大肉的三种模式(1):赌板(图解)