mysql redo log

mysql> show variables like '%innodb_log_file_size%';
+----------------------+-----------+
| Variable_name        | Value     |
+----------------------+-----------+
| innodb_log_file_size | 536870912 |
+----------------------+-----------+
1 row in set (0.00 sec)

mysql> show variables like '%log_files%';
+---------------------------+-------+
| Variable_name             | Value |
+---------------------------+-------+
| innodb_log_files_in_group | 2     |
+---------------------------+-------+
1 row in set (0.00 sec)

每个日志文件在一个日志组的大小(单位bytes),日志文件的组合大小(innodb_log_file_size * innodb_log_files_in_group) 

不能超过一个最大值 是略小于512GB. 一对255GB log files,比如,


会允许你接近这个限制但是不能超过它。

默认值是48MB,合理的值范围是从1MB到 1/N buffer pool的大小,

N 是日志文件的数量在group里,值越大, 更少的checkpoint flush行为是需要的在buffer pool,

节省磁盘I/O. Large log files 也会让crash recovery 变的慢,虽然改善恢复性能在MYSQL 5.5和更高的版本 让log file size 

更少的顾虑。

重要:

由于Bug #69477,redo log 写对于巨大的,外部存储的BLOB 字段会覆盖最近的检查点。

为了解决这个Bug, 一个补丁介绍在MySQL 5.6.20 限制了 redo log 的大小 BLOB 写 redo log 文件大小的10%

由于这个限制,innodb_log_file_size应该设置为大于10倍最大的BLOB 数据大小 



在MYSQL 5.6.22,redo log BLOB 写限制放宽到总共redo log size 的10% (innodb_log_file_size * innodb_log_files_in_group). 

ib_logfile:

log files 的数量在log group里, InnoDB 写到文件是一个环形的方式。


默认和推荐的值是2,这些文件的位置是通过innodb_log_group_home_dir 指定

mysql> show variables like '%innodb_log_group_home_dir%';
+---------------------------+-------+
| Variable_name             | Value |
+---------------------------+-------+
| innodb_log_group_home_dir | ./    |
+---------------------------+-------+
1 row in set (0.00 sec)

jrhdpt01:/data01/mysql# ls -lr ib_logfile*
-rw-r--r-- 1 root  root  100669440 Oct 28  2015 ib_logfile.tar
-rw-rw---- 1 mysql mysql 536870912 Oct 11 20:12 ib_logfile1
-rw-rw---- 1 mysql mysql 536870912 Oct 11 20:12 ib_logfile0

原文地址:https://www.cnblogs.com/zhaoyangjian724/p/6199133.html