转自http://www.cnblogs.com/Bozh/archive/2013/03/18/2966494.html

三者之间的区别
BIN-LOG 一个对应BINLOG文件
REDO-LOG 对应ib_logfile0
UNDO-LOG 对应ib_logfile0

第一:REDO LOG是在INNODB存储引擎层产生,而BINLOG是MYSQL数据库的上层产生的,并且二进制日志不仅仅针对INNODB存储引擎,MYSQL数据库中的任何存储引擎对于数据库的更改都会产生二进制日志。

第二:两种日志记录的内容形式不同。MYSQL的BINLOG是逻辑日志,其记录是对应的SQL语句。而INNODB存储引擎层面的重做日志是物理日志。

第三:两种日志与记录写入磁盘的时间点不同,二进制日志只在事务提交完成后进行一次写入。

而INNODB存储引擎的重做日志在事务进行中不断地被写入,并日志不是随事务提交的顺序进行写入的。

二进制日志仅在事务提交时记录,并且对于每一个事务,仅在事务提交时记录,并且对于每一个事务,仅包含对应事务的一个日志。

而对于INNODB存储引擎的重做日志,由于其记录是物理操作日志,

因此每个事务对应多个日志条目,并且事务的重做日志写入是并发的,并非在事务提交时写入,做其在文件中记录的顺序并非是事务开始的顺序。

--LOGS-BIN和--LOGS-SLAVE-updates

-- 开启二进制log_bin
SHOW VARIABLES LIKE '%log_bin%';

-- 开启将执行SQL语句转化为二进制日志文件
SHOW VARIABLES LIKE '%log_slave_updates%';

RESET MASTER;-- 删除日志文件

--LOGS-SLAVE-updates
通常情况,从服务器从主服务器接收到的更新不记入它的二进制日志。该选项告诉从服务器将其SQL线程执行的更新记入到从服务器自己的二进制日志。为 了使该选项生效,还必须用--LOGS-BIN选项启动从服务器以启用二进制日志。如果想要应用链式复制服务器,应使用--LOGS-SLAVE- updates。例如,可能你想要这样设置:

A -> B -> C

也就是说,A为从服务器B的主服务器,B为从服务器C的主服务器。为了能工作,B必须既为主服务器又为从服务器。你必须用--LOGS-BIN启动 A和B以启用二进制日志,并且用--LOGS-SLAVE-updates选项启动B。

以上是摘自MySQL对于LOGS-SLAVE-updates启动选项的描述。
当然LOGS-SLAVE-upates也可以写入my.cnf :
//////////////////
log_slave_updates=1
//////////////////

当然在这种机制下可能有的同学会存在这么个问题:
如果a->b b->a 这样的双MASTER架构下,a,b都打开log_slave_updates选项会不会出现无限循环的状态。
mysql已经考滤到了这个问题,每条BIN-LOG都会记录执行语句的源server_id.当SLAVE读到语句的server_id等于本身的ID 的时候,不会忽略执行,所以我们不用担心a,b会不会无限循环下去。

基于以上这种情况,mysql的REPLICATION集群将更加灵活,你如果需要可以做成各种各样的链式复制。比如 a->b b->a b中设置log_slave_updates后还可以b->c. 这样a,c中的数据也是一致的。

-- 比较常用的语句 查看事件信息
SHOW BINLOG EVENTS IN 'mysql-bin.000031';

Log_name Pos Event_type Server_id End_log_pos Info
mysql-bin.000031 4 Format_desc 111 123 SERVER ver: 5.7.14-LOG, BINLOG ver: 4
mysql-bin.000031 123 Previous_gtids 111 154
mysql-bin.000031 154 Anonymous_Gtid 111 219 SET @@SESSION.GTID_NEXT= 'ANONYMOUS'
mysql-bin.000031 219 QUERY 111 309 BEGIN
mysql-bin.000031 309 Intvar 111 341 INSERT_ID=4980699
mysql-bin.000031 341 QUERY 111 475 USE `copy_db`; INSERT INTO admin_log_info(admin_id) VALUES (555)
mysql-bin.000031 475 Xid 111 506 COMMIT /* xid=1450 */

SHOW VARIABLES LIKE '%innodb_flush_log_at_trx_commit%';

SHOW VARIABLES LIKE '%innodb%';

SHOW VARIABLES LIKE 'innodb_max_undo_log_size'

SHOW VARIABLES LIKE 'innodb_undo_logs'

SHOW VARIABLES LIKE '%innodb_log_file_size%';

SHOW VARIABLES LIKE '%innodb_log_files_in_group%';

三者之间的区别
BIN-LOG 一个对应BINLOG文件
REDO-LOG 对应ib_logfile0
UNDO-LOG 对应ib_logfile0

SHOW BINLOG EVENTS

1109关于redo_Log和undo_log和BIN-LOG的更多相关文章

  1. redo log和bin log

    讲redolog和binlog之前,先要讲一下一条mysql语句的执行过程. 1.client的写请求到达连接器,连接器负责管理连接.验证权限: 2.然后是分析器,负责复习语法,如果这条语句有执行过, ...

  2. 深入学习MySQL 02 日志系统:bin log,redo log,undo log

    上一篇文章中,我们了解了一条查询语句的执行过程,按理说这篇应该讲一条更新语句的执行过程,但这个过程比较复杂,涉及到了好几个日志与事物,所以先梳理一下3个重要的日志,bin log(归档日志).redo ...

  3. 谈谈MySQL bin log的写入机制、以及线上的参数是如何配置的

    目录 一.binlog 的高速缓存 二.刷盘机制 三.推荐的策略 推荐阅读 问个问题吧!为什么你需要了解binlog的落盘机制呢? 我来回答一下: ​ 上一篇文章提到了生产环境中你可以使用binlog ...

  4. MySQL日志系统bin log、redo log和undo log

    MySQL日志系统bin log.redo log和undo log   今人不见古时月,今月曾经照古人. 简介:日志是MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息,主要包括错误日 ...

  5. MySQL通过bin log日志恢复数据|手撕MySQL|对线面试官

    关注微信公众号[程序员白泽],进入白泽的知识分享星球 前言 作为<手撕MySQL>系列的第二篇文章,今天介绍一下MySQL的二进制日志(bin log),注意不要和MySQL的InnoDB ...

  6. 转-->>mysql的bin log

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

  7. mysql bin log配置及查看

    mysql执行sql可以通过设置mysql bin 日志进行记录查看   mysql bin日志配置如下:   log_bin:on log_bin_basename:bin文件路径及名前缀(/var ...

  8. bin log、redo log、undo log和MVVC

    logs innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过 ...

  9. 【Mysql】三大日志 redo log、bin log、undo log

    @ 目录 redo log(物理日志\重做日志) binlog(逻辑日志/归档日志) update语句执行流程 Uodolog(回滚日志/重做日志) undo log+redo log保证持久性 re ...

随机推荐

  1. XSS Payload知识备忘

    参考资料:<白帽子讲Web安全>吴翰清 著 参见: 百度百科 http://baike.baidu.com/view/50325.htm 维基百科 http://zh.wikipedia. ...

  2. 如何在TFS中恢复系统默认查询”已指派给我”的设置(TFS 2013)

    故事是这样开始的,一天开发人员求助说,在浏览器中修改了系统默认的工作项查询"已指派给我"的后,发现这个查询每次都提示超时,并且没有办法恢复到初始的设置状态,因为出现超时提示以后,查 ...

  3. win10 右键菜单添加使用gvim打开方式

    ①打开注册表编辑器,开始-->运行-->regedit ②定位到:HKEY_CLASSSES_ROOT---> * --->Shell,在Shell 上右击,新建---> ...

  4. div根据内容改变大小并且左右居中

    div{ display:inline-block; width:auto; } 这个div的父元素text-align:center;

  5. Android app 简单的电话拨号器

    实现步骤: 1.画UI 可以用拖拽和文本编辑. 2.根据UI写业务逻辑  在MainActivity中的onCreate中编写 //get editText content et_number = ( ...

  6. [No000043]学习Linux操作系统必备基础知识

    Linux操作系统概述 Q1.什么是GNU?Linux与GNU有什么关系? A: 1)GNU是GNU is Not Unix的递归缩写,是自由软件基金会(Free Software Foundatio ...

  7. hibernate save,update,saveorupdate方法有什么区别

    save肯定是添加的时候用,update修改时候用,saveorupdate是添加或修改,如果真是这样save和update的存在就没意义了,我们直接saveorupdate就行了. save在添加用 ...

  8. Dubbo架构设计详解

    from:http://shiyanjun.cn/archives/325.html Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解 ...

  9. PAT 1015. 德才论 (25)

    宋代史学家司马光在<资治通鉴>中有一段著名的"德才论":"是故才德全尽谓之圣人,才德兼亡谓之愚人,德胜才谓之君子,才胜德谓之小人.凡取人之术,苟不得圣人,君子 ...

  10. oracle小知识总结

    1,表列的五种约束 not null, unique,primary key, foreign key, check 2,权限分配 grant 权限 on 表 to 用户 3,表和视图的区别 视图是一 ...