MySQL下bin-log的三种模式(ROW、Statement、Mixed)
MySQL的bin-log日志备份有三种模式,分别是:ROW、Statement、Mixed
一、Row
基于行的复制(row-based replication,RBR)
日志中会记录成每一行数据被修改成的形式,然后在slave端再对相同的数据进行修改,只记录要修改的数据,只有value,不会有sql多表关联的情况。
优点:在row模式下,bin-log中可以不记录执行的sql语句的上下文相关信息,仅仅需要记录哪一条记录被修改了,修改成什么信样了,所以row的日志内容会非常清楚的记录下每一行数据修改的细节,非常容易理解。而且不会出现在某些特定情况下的存储过程和function,以及trigger的调用和处罚无法被正确问题。
缺点:在row模式下,所有执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容。
二、Statement
基于SQL语句的复制(statement-based replication,SBR)
每一条会修改数据的sql都会记录到master的binlog中,slave在的时候sql进程会解析成和原来master端相同的sql再执行。
优点:在Statement模式下首先就是解决了row模式下的缺点,不需要记录记录每一行日志的变化,减少了bin-log日志量,节省了I/O以及存储资源,提高性能。因为它们只需要激励在master上所执行的语句的细节以及执行语句时候的上下文信息。
缺点:在Statement模式下,由于它记录的执行语句,所以,为了让这些语句在slave端也能正确执行,那么它还必须记录每条语句在执行的时候的一些相关信息,也就是上下文信息,以保证所有语句在slave端被执行的时候能够得到和在master端执行时候的结果。另外,由于MySQL现在发展较快,很多的新功能不断的加入,使MySQL的遇到了不小的挑战,自然的时候涉及到越复杂的内容,bug也就越容易出现。在Statement中,目前已经发现不少情况会造成MySQL的出现问题,主要是修改数据的时候使用了某些特定的函数或者功能的时候会出现。
三、Mixed
混合模式复制(mixed-based replication,MBR)
从官方文档中看到,之前的MySQL一直都只有基于Statement的模式,知道5.1.5版本的MySQL才开始支持row模式。从5.0开始,MySQL的已经解决了大量老版本中出现的无法正确的问题。但是由于存储过程的出现,给MySQL replication又带来了更大的挑战。另外,看到官方文档说,从5.1.8版本开始,MySQL提供了除Statement和row之外的第三种模式:mixed,实际上就是前两种模式的结合。
在mixed模式下,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和row之间选择一种。新版本中的Statement还是和以前一样,仅仅记录执行的语句。而新版本的MySQL中对row模式也做了优化,并不是所有的修改都会以row模式来记录,比如遇到表结构变更的时候就会以Statement模式来记录,如果sql语句确实是update或者delete等修改数据的语句,那么还是会记录所有行的变更。
MySQL下bin-log的三种模式(ROW、Statement、Mixed)相关推荐
- 理解VMware虚拟机下网络连接的三种模式
很多朋友都用vmware来测试不同的系统,我结合自己的经验谈一下对网络设置的理解,不对的地方请指正. bridge: 这种方式最简单,直接将虚拟网卡桥接到一个物理网卡上面,和linux ...
- MySQL binlog日志三种模式选择及配置
在认识binlog日志三种模式前,先了解一下解析binlog日志的命令工mysqlbinlog.mysqlbinlog工具的作用是解析mysql的二进制binlog日志内容,把二进制日志解析成可以在M ...
- mysql binlog 权限_MySQL如何开启binlog?binlog三种模式的分析
前提,创建表t,并插入数据,语句如下: CREATE TABLE `t` ( `id` int(11) NOT NULL, `a` int(11) DEFAULT NULL, `t_modified` ...
- Mysql当前模式让不记录日志_MySQL日志binlog的三种模式
1三种模式的介绍 二进制日志binlog作用: 1.以二进制形式记录更改数据库的SQL语句(insert,update,delete,create,drop,alter等) 2.用于Mysql主从复制 ...
- mysql主从同步的三种模式
mysql 主从同步三种模式:异步复制.半同步复制.全同步复制 今天我们就来看下这三种同步模式的优势和劣势 异步复制 异步复制是mysql 默认的同步方式 在master为slave开通账号密码.ip ...
- MySQL binlog三种模式
原文出自 http://www.abcdocker.com/abcdocker/213 MySQ binlog三种模式及设置方法 1.1 Row Level 行模式 日志中会记录每一行数据被修改的形 ...
- 还在搞三层架构?了解下 DDD 分层架构的三种模式吧 !
来源:jianshu.com/p/a775836c7e25 引言 在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和分层架构的相关知识. DDD DDD(Domain DrivenDesign ...
- 还在搞三层架构?了解下 DDD 分层架构的三种模式吧
引言 在讨论DDD分层架构的模式之前,我们先一起回顾一下DDD和分层架构的相关知识. DDD DDD(Domain Driven Design,领域驱动设计)作为一种软件开发方法,它可以帮助我们设计高 ...
- redis 高可用(持久化、主从复制、哨兵、集群)以及集群的三种模式
Redis高可用定义 在web服务器中,高可用代表服务器可以正常访问的时间,一般使用百分比来衡量多长时间内可以提供正常服务 但是在redis中,高可用的定义还要更广泛一点,除了提供正常的服务(如主从分 ...
最新文章
- POJ 1251 Jungle Roads
- python库学习笔记——分组计算利器:pandas中的groupby技术
- python线程与进程视频教程_[PYTHON系列教程]→进程 vs. 线程
- python3.7.2怎么安装和管理扩展包_怎么安装python扩展包管理工具pip
- 秒杀多线程第六篇 经典线程同步 事件Event
- RouterModule.forRoot() called twice
- 数据库设计中的14个关键技巧
- [CB]将窗体从属于主窗体
- JS 基础知识点及常考面试题(二)
- Eclipse中移除native层编译支持
- 实战(一):对“钉钉”的逆向(实现打卡功能)
- java 编写a-z输出,有1-26个数字和a-z字母,用Java多线程实现先输出2和数字再输出2个字...
- 简约个人竞聘简历PPT模板
- 二进制 转换 .java_如何在Java程序中将二进制转换为十进制?
- 带你学习《深入理解计算机系统》虚拟存储器(1)——虚存概念及页、页表和地址翻译基础
- android dialog edittext 弹出软件盘,http://gogo.com-官方网站
- C#读取写入excel单元格
- 计算机上静音快捷键是什么,电脑静音快捷键是什么(如何设置电脑一键静音?)...
- 自动驾驶一周资讯汇总 2022/6/19
- vl53L0X传感器的编写,(未完待续)
热门文章
- 加州大学欧文分校 计算机专业,UCI的Computer Science「加州大学欧文分校计算机科学系」...
- linux用于开发qt java_Linux下Qt程序的打包发布
- 微软:来这个开源的网站看看我们是如何拥抱开源的
- 到 2022 年,75% 的数据库将托管在云端
- excel文件修复工具_win10上使用SFC工具修复损坏的系统文件,安全高效,维修电脑必会...
- mediarecorder 录制的文件无法拖动进度条_录制课程不用愁,小V手把手教学
- 亚马逊服务器维护,Amazon EC2 维护帮助页面
- c语言通讯录管理系统_通讯录管理系统(C语言)
- 光子不维护服务器,光子云和光子服务器
- 虚幻的东西_世间一切皆为虚幻