Mysql 重做日志及与二进制日志的区别

Mysql 重做日志及与二进制日志的区别(转http://blog.uouo123.com/post/623.html)

Mysql默认情况下会有两个文件:ib_logfile0和ib_logfile1,这两个文件就是重做日志文件,或者事务日志。

重做日志的目的:万一实例或者介质失败,重做日志文件就能派上用场。

每个InnoDB存储引擎至少有一个重做日志文件组,每个文件组下至少有2个重做日志文件,如默认的ib_logfile0、ib_logfile1。InnoDB存储引擎先写重做日志文件1,当达到文件的最后时,会切换至重做日志文件2,当重做日志文件2也被写满时,会再被切换到重做日志文件1中。

影响重做日志的参数:

Innodb_log_file_size、innodb_log_files_in_group、innodb_log_group_home_dir影响着重做日志文件的属性。

重做日志与二进制日志的区别:

1)二进制日志会记录所有与mysql有关的日志记录,包括InnoDB等其他存储引擎的日志,而InnoDB存储引擎的重做日志只记录有关其本身的事务日志,

2)记录的内容不容,不管你将二进制日志文件记录的格式设为哪一种,其记录的都是关于一个事务的具体操作内容,而InnoDB存储引擎的重做日志文件记录的关于每个页的更改的物理情况;

3)写入的时间也不同,二进制日志文件是在事务提交前进行记录的,而在事务进行的过程中,不断有重做日志条目被写入重做日志文件中。

从日志缓冲写入磁盘上的重做日志文件的条件:

在主线程中每秒会将重做日志缓冲写入磁盘的重做日志文件中,不论事务是否提交。另一个触发这个过程是由参数innodb_flush_log_at_trx_commit控制,表示在提交时,处理重做日志的方式。

参数innodb_flush_log_at_trx_commit可设的值有0、1、2,0代表当提交事务时,并不将事务的重做日志写入磁盘上的日志文件,而是等待主线程每秒的刷新,而1和2不同的地方在于:1是在commit时将重做日志缓冲同步写到磁盘;2是重做日志异步写到磁盘,即不能完全保证commit时肯定会写入重做日志文件,只是有这个动作。

值得注意的一点:因为重做日志有个capacity变量,该值代表了最后的检查点不能超过这个阀值。

 

时间: 2024-10-16 07:21:40

Mysql 重做日志及与二进制日志的区别的相关文章

MySQL中基于mysqldump和二进制日志log-bin二进制日志进行逻辑备份以及基于时间点的还原

本文出处:http://www.cnblogs.com/wy123/p/6956464.html 本文仅模拟使用mysqldump和log-bin二进制日志进行简单测试,仅作为个人学习笔记,可能离实际应用还有很大差距,仅参考. 开启MySQL的bin-log二进制日志 模拟还原是需要mysqldump出来的文件和log-bin,因此需要开始log-bin二进制日志. mysql5.7.18在开启二进制日志的时候除了要设置log-bin的位置之外,另外需要设置一个server-id,MySQL之前

mysql数据库的备份和二进制日志恢复

mysql备份和bin-log日志 备份数据: mysqldimp -uroot -p  test -l -F '/tmp/test.sql' -l 读锁 -F即flush logs, 可以重新生成的日志文件,当然包括log-bin日志. 查看bin-log日志用 mysql>show master status; 清空表数据 truncate tables; 根据二进制bin-log日志恢复 查看bin-log日志 mysqlbinlog --no-defaults mysql-bin.000

MySQL二进制日志(binary log)总结

本文出处:http://www.cnblogs.com/wy123/p/7182356.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错误进行修正或补充,无他) 今天无意中发现了一个云栖社区举行的MySQL“第一季:挑战玄惭之 慢SQL性能优化赛”,在测试服务器上执行其测试脚本写入数据的时候报错提示如下,Multi-statement transaction required more than 'max_binlog_cache_

mysql dba系统学习(6)二进制日志binlog之二

MySQL 5.5 中对于二进制日志 (binlog) 有 3 种不同的格式可选:Mixed,Statement,Row,默认格式是 Statement.总结一下这三种格式日志的优缺点. MySQL Replication 复制可以是基于一条语句 (Statement Level) ,也可以是基于一条记录 (Row Level),可以在 MySQL 的配置参数中设定这个复制级别,不同复制级别的设置会影响到 Master 端的 bin-log 日志格式. 1. Row日志中会记录成每一行数据被修改

MySQl Study学习之--MySQl二进制日志管理

MySQl Study学习之--MySQl二进制日志管理 MySQL二进制日志(Binary Log):   a.它包含的内容及作用如下:    包含了所有更新了数据或者已经潜在更新了数据(比如没有匹配任何行的一个DELETE)    包含关于每个更新数据库(DML)的语句的执行时间信息    不包含没有修改任何数据的语句,如果需要启用该选项,需要开启通用日志功能    主要目的是尽可能的将数据库恢复到数据库故障点,因为二进制日志包含备份后进行的所有更新    用于在主复制服务器上记录所有将发送

linux下mysql开启二进制日志

最近需要在linux系统下打开mysql的更新日志(即二进制日志),这样可以用来避免数据库因误操作或数据丢失,能够还原到操作之前.但是网上很多帖子都是复制黏贴,以至找了好几天都没有设置成功.大多按照网上方法都遇到,数据库重启失败. 试了好多方法,终于设置成功,十分感谢那篇神贴的作者. mysql的查询日志,慢查询日志,错误日志,网上的设置方法是正确的.但在二进制日志上设置有问题.正确的设置方法如下, 在/etc/my.cnf文件中[mysqld]下加上: server-id = 1  log-b

MySQL二进制日志操作

二进制日志 概念 记录对数据发生或潜在发生更改的SQL语句,并且是以二进制格式保存的日志 使用用途 查看数据库变更历史 数据库增量备份 数据库灾难恢复 MySQL复制(主从.主主复制) 二进制日志性能影响 日志即影响MySQL性能又占用大量磁盘空间.因此,往往需要做采样分析时才会打开 即使做采样分析,也最好仅在一台测试机上开启 二进制日志由于用途广泛,大多数情况下会开启.需要制定合理的备份计划和管理策略 开启二进制日志 方法一:不重启修改二进制日志配置 SET @@global.log_bin=

MySQL知识总结(四)二进制日志

1 定义 bin-log日志记录了所有的DDL和DML的语句,但不包括查询的语句,语句以事件的方式保存,描述了数据的更改过程,此日志对发生灾难时数据恢复起到了极为重要的作用. 2 开启 mysql默认是没有开发bin-log日志,首先我们需要开启bin-log日志,在my.cnf中修改 [mysqld] log_bin = mysql-bin datadir=/var/lib/mysql //指定数据文件存放目录,如二进制日志文件 查看二进制日志文件 cd /var/lib/mysql ls 由

MySQL主从复制 - 基于二进制日志(理论篇)

mysql日志类型 1    二进制日志 2    事务日志 3    一般查询日志 4    中继日志 5    慢查询日志 二进制日志 二进制日志通常记录的是可能潜在引起数据库发生改变的操作,每一个操作我们称为一个event. 二进制日志记录一个event的时候,通常还会记录timestamp,position(偏移量offset),server-id,event本身. 二进制日志的数据存储形式,形如mysql-bin.xxxxxx这种,二进制日志除了mysql-bin.xxxxxx之外,还