1109关于redo_Log和undo_log和BIN-LOG
转自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的更多相关文章
- redo log和bin log
讲redolog和binlog之前,先要讲一下一条mysql语句的执行过程. 1.client的写请求到达连接器,连接器负责管理连接.验证权限: 2.然后是分析器,负责复习语法,如果这条语句有执行过, ...
- 深入学习MySQL 02 日志系统:bin log,redo log,undo log
上一篇文章中,我们了解了一条查询语句的执行过程,按理说这篇应该讲一条更新语句的执行过程,但这个过程比较复杂,涉及到了好几个日志与事物,所以先梳理一下3个重要的日志,bin log(归档日志).redo ...
- 谈谈MySQL bin log的写入机制、以及线上的参数是如何配置的
目录 一.binlog 的高速缓存 二.刷盘机制 三.推荐的策略 推荐阅读 问个问题吧!为什么你需要了解binlog的落盘机制呢? 我来回答一下: 上一篇文章提到了生产环境中你可以使用binlog ...
- MySQL日志系统bin log、redo log和undo log
MySQL日志系统bin log.redo log和undo log 今人不见古时月,今月曾经照古人. 简介:日志是MySQL数据库的重要组成部分,记录着数据库运行期间各种状态信息,主要包括错误日 ...
- MySQL通过bin log日志恢复数据|手撕MySQL|对线面试官
关注微信公众号[程序员白泽],进入白泽的知识分享星球 前言 作为<手撕MySQL>系列的第二篇文章,今天介绍一下MySQL的二进制日志(bin log),注意不要和MySQL的InnoDB ...
- 转-->>mysql的bin log
binlog 基本认识 MySQL的二进制日志可以说是MySQL最重要的日志了,它记录了所有的DDL和DML(除了数据查询语句)语句,以事件形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日 ...
- mysql bin log配置及查看
mysql执行sql可以通过设置mysql bin 日志进行记录查看 mysql bin日志配置如下: log_bin:on log_bin_basename:bin文件路径及名前缀(/var ...
- bin log、redo log、undo log和MVVC
logs innodb事务日志包括redo log和undo log.redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作. undo log不是redo log的逆向过 ...
- 【Mysql】三大日志 redo log、bin log、undo log
@ 目录 redo log(物理日志\重做日志) binlog(逻辑日志/归档日志) update语句执行流程 Uodolog(回滚日志/重做日志) undo log+redo log保证持久性 re ...
随机推荐
- Machine Learning Algorithms Study Notes(2)--Supervised Learning
Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 本系列文章是Andrew Ng 在斯坦福的机器学习课程 CS 22 ...
- 网页中导入特殊字体@font-face属性详解
@font-face是CSS3中的一个模块,他主要是把自己定义的Web字体嵌入到你的网页中. 语法规则 首先我们一起来看看@font-face的语法规则: @font-face { font-fami ...
- 02 Hibernate错题分析
解析:使用final修饰的成员变量是常量 解析:不存在StateMoreSession的对象 解析:一个PreparedStatement 可以执行多次executQuery方法 解析:A 使用H ...
- http协议(七)通用首部字段
通用首部字段的意思,就是:请求和响应报文双方都会使用的首部 1.Cache-Control 通过指定它的指令,能操作缓存的工作机制 指令参数是可选的,多个指令通过“,”分隔 Cache-Control ...
- win2008server R2 x64 部署.net core到IIS上出现【Failed to load the dll from [C:\Program Files\dotnet\host\fxr\1.0.1\hostfxr.dll], HRESULT: 0x80070057】错误
win2008server R2 x64 部署.net core到IIS上出现[Failed to load the dll from [C:\Program Files\dotnet\host\fx ...
- sudo命令使用的几个场景
在linux系统下,普通用户无法直接执行root用户权限下的命令,如果想让普通用户执行只有root用户才能执行的操作命令.下面罗列下经常使用sudo命令的几个场景: 1.用户无权限执行root命令普通 ...
- Eclipse和MyEclipse工程描述符.classpath和.project和.mymetadata详解aaaaaa(转)
Eclipse和MyEclipse工程描述符.classpath和.project和.mymetadata详解(转) (2012-03-28 15:06:54) 转载▼ 标签: .mymetadata ...
- centos 命令集合
链接: http://www.cnblogs.com/zitsing/archive/2012/05/02/2479009.html http://www.centoscn.com/CentOS/he ...
- c语言 指针与数组
关键概念: 1.多个不同类型的指针可以对应同一个地址: 2.(&p)则是这样一种运算,返回一个指针,该指针的值是当时声明p 时开辟的地址,指针的类型是p的类型对应的指针类型: 3.(*p)操作 ...
- 前端见微知著JavaScript基础篇:this or that ?
上节,我们提到了this关键字的问题,并且追加了一句很有意义的话:谁调用我,我指向谁.的确,在javascript中,在默认情况下,this会指向一个已经初始化的window对象.所以你不论有多少全局 ...