mysql之 redo log
重做日志(redo log)
前言:之前一直弄不清楚 mysql 里面 bin log 和 innodb log 文件的区别,在脑子里面一直有个疑问 binlog 日志文件已经可以用来进行
数据库的日志备份恢复了,怎么又多了一个 redo log 文件了。相信也有很多人有这个疑惑,现在把整个过程文档整理出来,希望对大家有所帮忙。
如果对 Oracle 很了解,那么在整个学习 innoDB log 的时候,可以把联
机重做日志的那套理论套在学习 innoDB log 上面,几乎是一样的;
1、innodb log 的基础知识
innodb log 顾名思义:即 innodb 存储引擎产生的日志,也可以称为
重做日志文件,默认在 innodb_data_home_dir 下面有两个文件
ib_logfile0 和 ib_logfile1。MySQL 官方手册中将这两个文件叫文
InnoDB 存储引擎的日志文件;
查看日志文件位置:
[root@rh55 ~]# cat /etc/my.cnf
# Uncomment the following if you are using InnoDB tables
#innodb_data_home_dir = /usr/local/mysql/data
#innodb_data_file_path = ibdata1:10M:autoextend
#innodb_log_group_home_dir = /usr/local/mysql/data
# You can set .._buffer_pool_size up to 50 - 80 %
# of RAM but beware of setting memory usage too high
#innodb_buffer_pool_size = 16M
#innodb_additional_mem_pool_size = 2M
# Set .._log_file_size to 25 % of buffer pool size
#innodb_log_file_size = 5M
#innodb_log_buffer_size = 8M
#innodb_flush_log_at_trx_commit = 1
#innodb_lock_wait_timeout = 50
[root@rh55 ~]# cd /usr/local/mysql/data/
[root@rh55 data]# ls -l
total 28732
-rw-rw---- 1 mysql mysql 18874368 Jun 10 16:52 ibdata1
-rw-rw---- 1 mysql mysql 5242880 Jun 10 16:52 ib_logfile0
-rw-rw---- 1 mysql mysql 5242880 Jun 10 16:52 ib_logfile1
drwxr-xr-x 5 mysql mysql 4096 Jun 19 14:12 mysql
drwx------ 2 mysql mysql 4096 Jun 10 16:52
performance_schema
drwxr-xr-x 2 mysql mysql 4096 Jun 10 16:18 test
innodb log 的作用:当 MySQL 的实例和介质失败的时候,Innodb存储引擎就会使用 innodb log 文件进行恢复,保证数据库的完整性;
innodb log 的写原理:(请容许我再放下 InnoDB 的原理图,并且建议把这张图看到吐)
每个 InnDB 存储引擎至少有 1 个重做日志文件组(group),每个文件组下至少有两个重做日志文件,默认的为 ib_logfile0、ib_logfile1;
日志组中每个重做日志的大小一致,并循环使用;
InnoDB 存储引擎先写重做日志文件,当文件满了的时候,会自动切换到日志文件 2,当重做日志文件 2 也写满时,会再切换到重做日
志文件 1;为了保证安全和性能,请设置每个重做日志文件设置镜像,并分配到不同的磁盘上面;
(发现以上特性跟 ORACLE 的连接重做日志文件简直是一样的)
2、innodb log 的相关参数
运行脚本:show variables like 'innodb%log%'; 查看重做日志的相关参数
mysql> show variables like 'innodb%log%';
常用设置的参数有:
innodb_mirrored_log_groups 镜像组的数量,默认为 1,没有镜像;
innodb_log_group_home_dir 日志组所在的路径,默认为 data 的home 目录;
innodb_log_files_in_group 日志组的数量,默认为 2;
innodb_log_file_size 日志组的大小,默认为 5M;
innodb_log_buffer_size 日志缓冲池的大小,图上为 30M
3、参数的相关调优
3.1 重做日志文件的大小设置跟 ORACLE 一样,面临的问题是相似的。
当 innodb log 设置过大的时候,可能会导致系统崩溃后恢复需要很长的时间;
当 innodb log 设置过小的时候,当一个事务产生大量的日志的时候,需要多次切换重做日志文件,会产生类似如下的报警;
130702 12:53:13 InnoDB: ERROR: the age of the last checkpoint
is 2863217109,
InnoDB: which exceeds the log group capacity 566222311.
InnoDB: If you are using big BLOB or TEXT rows, you must set the
InnoDB: combined size of log files at least 10 times bigger than the
4、重做日志与二进制日志的区别
4.1 记录的范围不同:二进制日志会记录 MySQL 的所有存储引擎的日志记录(包括 InnoDB、MyISAM 等),而 InnoDB 存储引擎的重做日志只会记录其本身的事务日志。
4.2 记录的内容不同:二进制日志文件记录的格式可以为STATEMENT 或者 ROW 也可以是 MIXED,其记录的都是关于一个事务的具体操作内容。
InnoDB 存储引擎的重做日志文件记录的关于每个页的更改的物理情况。
4.3 写入的时间也不同:二进制日志文件是在事务提交前进行记录的,而在事务进行的过程中,不断有重做日志条目被写入到重做日志文件中。
mysql之 redo log的更多相关文章
- MySQL的redo log结构和SQL Server的log结构对比
MySQL的redo log结构和SQL Server的log结构对比 innodb 存储引擎 mysql技术内幕 log buffer根据一定规则将内存中的log block刷写到磁盘,这个规则是 ...
- MySQL中Redo Log相关的重要参数总结
参数介绍 下面介绍.总结一下MySQL的Redo Log相关的几个重要参数:innodb_log_buffer_size.innodb_log_file_size.innodb_log_files ...
- MySQL中redo log、undo log、binlog关系以及区别
MySQL中redo log.undo log.binlog关系以及区别 本文转载自:MySQL中的重做日志(redo log),回滚日志(undo log),以及二进制日志(binlog)的简单总结 ...
- 【MySQL】redo log --- 刷入磁盘过程
1.redo log基本概念 redo log的相关概念这里就不再过多阐述,网上有非常多的好的资料,可以看下缥缈大神的文章:https://www.cnblogs.com/cuisi/p/652507 ...
- Mysql InnoDB Redo log
一丶什么是redo innodb是以也为单位来管理存储空间的,增删改查的本质都是在访问页面,在innodb真正访问页面之前,需要将其加载到内存中的buffer pool中之后才可以访问,但是在聊事务的 ...
- mysql事务(一)——redo log与undo log
数据事务 即支持ACID四大特性. A:atomicity 原子性——事务中所有操作要么全部执行成功,要么全部执行失败,回滚到初始状态 C:consistency 一致性—— ...
- MySQL如何计算统计redo log大小
在MySQL中如何计算.统计重做日志(redo log)的生成情况呢? 例如10分钟内,生成了多少M的redo log呢?30分钟内又生成了多少M的redo log......MySQL没有像Or ...
- 14.2.3 InnoDB Redo Log
14.2.3 InnoDB Redo Log 14.2.3.1 Group Commit for Redo Log Flushing redo log 是一个基于磁盘数据结构的用于在crash 恢复正 ...
- 谈谈传说中的redo log是什么?有啥用?
目录 一.引出 redo log 的作用 二.思考一个问题: 三.redo log block 四.redo log buffer 五.redo log的刷盘时机 六.推荐参数 七.redo log ...
随机推荐
- 10个HTML5美化版复选框和单选框
单选框Radiobox和复选框checkbox在网页中也十分常见,虽然它没有按钮的交互性强,但是如果能把它们像按钮那样美化一下,那也是非常不错的.本文收集了10个相对比较漂亮的美化版单选框和复选框,希 ...
- L259 合同
We are satisfied with the terms of this contract for the most part, but we feel that your terms of p ...
- win7 java环境变量配置
进行win7下Java环境变量配置 在"系统变量"下进行如下配置: (1)新建->变量名:JAVA_HOME变量值 C:\Program Files\Java\jd ...
- phpstom pojie
https://blog.csdn.net/gu_wen_jie/article/details/79136475
- 2019-03-27-day020-单继承与多继承
昨日回顾 类的加载顺序 类内部的代码什么时候执行? 除了方法里面的代码 其余的所有内容都是在执行这个文件的时候就从上到下依次执行的 不需要调用 如果有同名的方法.属性,总是写在后面的会生 class ...
- Java Editplus编译环境配置
java jdk 安装win10 配置:此电脑--属性--高级系统设置--环境变量--系统变量-->新建--变量名--JAVA_HOME 变量值--浏览目录--jdk安装路径jdk...--&g ...
- git 清空缓冲区
git rm与git rm --cached 当我们需要删除暂存区或分支上的文件, 同时工作区也不需要这个文件了, 可以使用 git rm file_path git commit -m 'delet ...
- 区块链与Git版本工具的比较
区块链与Git版本工具的比较 来源:http://www.jianshu.com/p/b96b98983df6 作者: 梁波林 相同点: 1. 分布式存储方案 2. 链式数据 3. 去中心化 4. ...
- C#线程、前后台线程
C#线程.前后台线程 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创新 ...
- numpy unable to find vcvarsall.bat
出现这种情况,是需要引用vc的编译器,可以安装vs来解决,并且安装numpy前, 设置如下宏 SET VS100COMNTOOLS=%VS110COMNTOOLS% SET VS90COMNTOOLS ...