在认识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';

MySQL binlog日志三种模式选择及配置相关推荐

  1. Mysql当前模式让不记录日志_MySQL日志binlog的三种模式

    1三种模式的介绍 二进制日志binlog作用: 1.以二进制形式记录更改数据库的SQL语句(insert,update,delete,create,drop,alter等) 2.用于Mysql主从复制 ...

  2. MySQL下bin-log的三种模式(ROW、Statement、Mixed)

    MySQL的bin-log日志备份有三种模式,分别是:ROW.Statement.Mixed 一.Row 基于行的复制(row-based replication,RBR) 日志中会记录成每一行数据被 ...

  3. mysql binlog 权限_MySQL如何开启binlog?binlog三种模式的分析

    前提,创建表t,并插入数据,语句如下: CREATE TABLE `t` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL, `t_modified` ...

  4. mysql主从同步的三种模式

    mysql 主从同步三种模式:异步复制.半同步复制.全同步复制 今天我们就来看下这三种同步模式的优势和劣势 异步复制 异步复制是mysql 默认的同步方式 在master为slave开通账号密码.ip ...

  5. MySQL binlog三种模式

    原文出自 http://www.abcdocker.com/abcdocker/213 MySQ binlog三种模式及设置方法 1.1 Row Level  行模式 日志中会记录每一行数据被修改的形 ...

  6. tp-link交换机 TL-SG1024T(T系列)三种模式的选择

    TL-SG1024T主要是为了解决网络克隆.无盘启动慢等问题而设计的,与普通交换机相比,TL-SG1024T多出一个三级滑动硬件开关,有三种可选模式:M1(网络克隆).M2(标准共享).M3(汇聚上联 ...

  7. MYSQL复制的几种模式

    MYSQL复制的几种模式 MySQL 5.1 中,在复制方面的改进就是引进了新的复制技术:基于行的复制. MYSQL复制的几种模式 MySQL 5.1 中,在复制方面的改进就是引进了新的复制技术:基于 ...

  8. redis 高可用(持久化、主从复制、哨兵、集群)以及集群的三种模式

    Redis高可用定义 在web服务器中,高可用代表服务器可以正常访问的时间,一般使用百分比来衡量多长时间内可以提供正常服务 但是在redis中,高可用的定义还要更广泛一点,除了提供正常的服务(如主从分 ...

  9. 设置自动清理mysql binlog日志和手动删除的方法

    MYSQL主从复制(replication)采用 RBR 模式后,binlog的格式为"ROW",能解决很多原先出现的主键重复问题. 在一个繁忙的master db server上 ...

最新文章

  1. 《LeetCode力扣练习》剑指 Offer 25. 合并两个排序的链表 Java
  2. 成功解决cv2.error: OpenCV(4.1.2) /io/opencv/modules/imgproc/src/color.cpp:182: error: (-215:Assertion fa
  3. 从接触FPGA开始...
  4. python首行代码import *,from * import * 解析
  5. jasperreports_JasperReports JSF插件用例–简单列表报告
  6. 前端学习(3301):类组件的ref
  7. ASP.NET Aries 入门开发教程2:配置出一个简单的列表页面
  8. linux 手动控制cpu转速,Linux 手动计算CPU使用率
  9. django Error: That port is already in use.
  10. group by分组后获得每组中时间最大的那条记录
  11. 踩坑事件:windows操作系统下的eclipse中编写SparkSQL不能从本地读取或者保存parquet文件
  12. 【图论】最优乘车(最短路变形)
  13. 在服务器上安装centos系统
  14. 克里斯·弗雷格利(Chris Fregly)在PANCAKE STACK研讨会和数据管道上
  15. 如何将word转换成excel格式
  16. 一文读懂数据库的文本数据类型:CHAR,VARCHAR,TEXT,BLOG,NCHAR、NVARCHAR、NTEXT
  17. 用python画一只可爱的皮卡丘
  18. ESP8266_04-------------串口的使用
  19. GMA Round 1 奇怪的数列
  20. 真实生活的记录:我三年的外企生涯(1)出处:天涯虚拟社区

热门文章

  1. 《HBase企业应用开发实战》—— 3.6 本章小结
  2. Backup and Recovery Basics1
  3. centos crontab环境变量问题
  4. Visual Studio 中常用的快捷键
  5. 腾讯技术运营岗实习面试面经
  6. VS下Qt4.8.4安装
  7. Intel CPU 曝两个新漏洞影响所有处理器,设备可遭接管(含视频)
  8. 微软反向 RDP 漏洞补丁不当,第三方 RDP 客户端易受攻击
  9. MySQL主主+Keepalived高可用(一):解决单点故障
  10. LINUX命令之stat及显示的三个时间戳