mysql binlog日志三种格式_MySQL binlog三种格式详细介绍

查看当前数据库binlog日志格式:

show global variables like '%binlog_format%';

一、三种格式介绍

1.1 STATEMENT

该格式下每一条会修改数据的sql都会记录在binlog中;

优点:

不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。它相比row模式能节约很多性能与日志量,具体节约的多少取决于应用的SQL情况。正常同一条记录修改或者插入row格式所产生的日志量还小于Statement产生的日志量,考虑到整表删除等一些大量数据操作,ROW格式会产生大量日志,所以总体来讲statement模式会稍微好一些。

缺点:

由于记录的只是执行语句,为了这些语句能在slave上正确运行,因此还必须记录每条语句在执行的时候的一些相关信息,以保证所有语句能在slave得到和在master端执行时候相同的结果。

1.2 ROW

此格式不记录sql语句上下文相关信息,仅保存哪条记录被修改;

优点:

binlog中可以不记录执行的sql语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了。所以Row格式的日志内容会非常清楚的记录下每一行数据修改的细节。

缺点:

所有的执行的语句当记录到日志中的时候,都将以每行记录的修改来记录,这样可能会产生大量的日志内容,比如一条update语句或者一条alter语句,修改多条记录,则binlog中每一条修改都会有记录,每条记录都发生改变,那么该表每一条记录都会记录到日志中,这样造成binlog日志量会很大。

1.3 MIXED

该格式是以上两种level的混合使用,一般的语句修改使用statment格式保存binlog,当statement无法完成主从复制的操作时(设计一些函数时),则采用Row格式保存binlog,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种。

新版本的MySQL中队Row模式也被做了优化,并不是所有的修改都会以Row模式来记录,像遇到 表结构变更  的时候就会以statement模式来记录。至于update或者delete等修改数据的语句,还是会记录所有行的变更。

二、实践验证

三、到底应该选用哪一种模式?

关于这三中格式的binlog,我们在使用的时候到底应该使用哪一种?我的观点如下:

如果我们的磁盘空间和服务器性能比较OK的情况下,尽量使用Row模式,因为这种模式能够最大程度的保证安全性,虽然产生的日志量很多,但是当你误删数据的时候,你就会感受到binlog给你带来的温暖;

当我们对一些不太重要的业务库(例如一些log库)进行数据主从复制的时候,尽量使用statement来执行,因为它的速度快,日志量小,而且不牵扯使用函数,是简单的数据同步;

如果有一些场景需要尽量保证性能,但是又没有十分严格的要求时,我们可以设置为Mixed格式,它可以在statement和Row之间进行切换,保证了业务的写入性能;

最后一点,在RC和RU隔离界别下,不能使用statement格式的binlog日志;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/539710.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2017阿里技术年度精选(全)

2019独角兽企业重金招聘Python工程师标准>>> 2017年,在技术发展的历史上,一定是个特别的一年:柯洁与AlphaGo的惊世大战,无人咖啡店开放体验,AI设计师“鲁班”横空出世、三年投入千亿的达摩院正式成立…… 这…

查询Oracle正在执行的sql语句,锁表,解锁

原文出处:http://blog.csdn.net/jlds123/article/details/6572559 ----------------------- --查询Oracle正在执行的sql语句及执行该语句的用户 [sql] view plaincopy SELECT b.sid oracleID, b.username 登录Oracle用户名, b.serial#, …

xampp for mac mysql_xampp for mac下载-Xampp Mac版下载 V7.3.2-PC6苹果网

Xampp for mac是目前时下最流行的PHP开发环境,XAMPP是完全免费且易于安装的Apache发行版,其中包含MySQL、PHP和Perl。XAMPP开放源码包的设置让安装和使用出奇容易。整合型的Apache套件。XAMPP包括Apache、MySQL、PHP、PERL,直接解压缩&#x…

15.2. important

<para><important>Text goes here.</important></para>重要Text goes here.原文出处&#xff1a;Netkiller 系列 手札 本文作者&#xff1a;陈景峯 转载请与作者联系&#xff0c;同时请务必标明文章原始出处和作者信息及本声明。

查看表的创建时间

select OWNER,OBJECT_NAME,CREATED from dba_objects where OBJECT_NAME表名 CREATED 是表的创建时间 查询 dba_objects 表需要dba权限

linux python2.7 scipy_scipy.sparse.linalg.sp为Linux系统上的大型稀疏矩阵解决了令人惊讶的行为...

我正在计算一个线性系统Ax b的解决方案&#xff0c;其中A具有一个大的(通常200,000行和相关的密集矩阵的列)稀疏矩阵和ba稀疏矩阵&#xff0c;大约100列。当我在Windows系统上运行代码(Python2.7&#xff0c;scipy0.14.0)时&#xff0c;以下命令fromscipy.sparse.linalgimport…

简简单单的代码让你轻松学会 动态代理

原文出处&#xff1a;http://weixiaolu.iteye.com/blog/1477774 -------------------------------------------------------------------------- 简简单单的代码让你轻松学会动态代理 前言&#xff1a; 最近一直在分析hadoop的RPC机制。在hadoop中&#xff0c;DataNode和Na…

python变量和字符_Python变量和字符串

我需要知道Python中的变量是字符串(名称)还是数字。我想检查图的度数&#xff0c;但是我需要知道“I”迭代器是字符串内部的一个数字还是字符串内的一个名称&#xff0c;在末尾显示了图的度数。在这个代码有什么问题吗&#xff1f;在import csv, sysimport networkx as nxdef m…

Adobe软件打开后设置默认页面方式和默认鼠标方式

PDF文件打开后是默认显示&#xff0c;与显示器比例不协调&#xff0c;或大或小&#xff0c;总是需要手动调节阅读方式&#xff0c;解决方法如下&#xff1a; Adobe软件中可以设置默认页面方式&#xff0c;具体步骤如下&#xff1a; 编辑 (Edit)-首选项(Preferences)-辅助工具…

CSS深入理解学习笔记之vertical-align

1、vertical-align基本认识 支持的属性值&#xff1a; ①线类&#xff1a;baseline&#xff08;默认&#xff09;&#xff0c;top&#xff0c;middle&#xff0c;bottom ②文本类&#xff1a;text-top&#xff0c;text-bottom ③上标下标类&#xff1a;sub&#xff0c;super ④…

Java NIO原理 图文分析及代码实现

原文出处&#xff1a;http://weixiaolu.iteye.com/blog/1479656 ---------------------------------------------------------------------- Java NIO原理图文分析及代码实现 前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol &#xff0c;远程过程调用协议&am…

威纶通触摸屏与mysql_威纶触摸屏应用实例 以及威纶通触摸屏配方组合

在生产车间&#xff0c;每台设备运作起来都会有各自的组合参数&#xff0c;每台设备运作的时候产生的数据即构成配方表&#xff0c;每张配方表内可建立多组配方数据&#xff0c;这些多台机器的配方数据都可储存在人机里&#xff0c;以供控制器(PLC)执行相对应的任务。从“包装机…

分析师视角:2018年的数据中心3大预测

向数字业务平台的迁移促使基础设施和运营(I&O)领导者必须重新去思考他们的数据中心策略。像人工智能这样的数字业务平台&#xff0c;包括机器学习(ML)、深度神经网络(DNN)和物联网&#xff0c;对IT基础设施有敏捷和可伸缩性等方面的计算需求。在2018年&#xff0c;I&O领…

大数据实时处理:百分点实时计算架构和算法

原文&#xff1a;http://www.oschina.net/question/1459174_145255 百分点官网&#xff1a;http://www.baifendian.com/ ------------------以下正文---------------------- 当今时代&#xff0c;数据不再昂贵&#xff0c;但从海量数据中获取价值变得昂贵&#xff0c;而要及时…

ELK 日志处理开发指南

ELK 是 Elastic 公司出品的开源实时日志处理与分析解决方案&#xff0c;ELK 分别代表分布式搜索引擎 Elasticsearch、日志采集与解析工具 Logstash、日志可视化分析工具Kibana&#xff0c;具有配置方式灵活、集群可线性扩展、日志实时导入、检索性能高效、可视化分析方便等优点…

UNION 和UNION ALL 的区别

UNION&#xff1a;的结果集没有重复行&#xff0c;且安union默认的排序规则进行排序了。 UNION ALL&#xff1a;的结果集&#xff0c;如果各表有重复行就有重复行&#xff0c;不删重复行&#xff0c;不排序。 ------------------------- 在数据库中&#xff0c;UNION和UNION…

mysql connector 教程_MySQL Connector/C++入门教程(上)

目录MySQL C Driver的实现基于JDBC4.0规范安装MySQL Connector/C运行时依赖C IDE为示例程序创建数据库与数据表使用Connector/C测试数据库连接使用prepared Statements使用事务访问Result Set Metadata访问Database Metadata通过PreparedStatment对象访问参数元数据捕获异常调试…

14-项目开发总结报告(GB8567——88)

项目开发总结报告&#xff08;GB8567——88&#xff09;1引言1.1编写目的说明编写这份项目开发总结报告的目的&#xff0c;指出预期的阅读范围。1.2背景说明&#xff1a;a&#xff0e; 本项目的名称和所开发出来的软件系统的名称&#xff1b;b&#xff0e; 此软件的任务提出者、…

Oracle 并行查询

所谓并行执行&#xff0c;是指能够将一个大型串行任务&#xff08;任何DML&#xff0c;一般的DDL&#xff09;物理的划分为叫多个小的部分&#xff0c;这些较小的部分可以同时得到处理。 何时使用并行执行: 1、必须有一个非常大的任务 2、必须有充足的资源&#xff08;CPU,I…

python中求二维数组元素之和_python二维列表求解所有元素之和

相信很多初学小伙伴都会遇到二维列表求解所有元素之和问题,下面给出两种两种常见的求和方法。 方法1: 思想:遍历整个二维列表元素,然后将所有元素加起来 1 def Sum_matrix(matrix): 2 sum=0 3 for i in range(len(matrix)): 4 for j in range(len(matrix[i])): 5 sum+=matr…