redo log的作用是记录事务日志。万一实例或介质失败,可以通过redo log进行恢复,保证数据的完整性。
每个InnoDB存储引擎至少有1个redo log文件组,每个文件组下至少有2个redo log文件。为了得到更高的可靠性,可以设置多个mirrored log group,将不同的文件组放在不同的磁盘上。日志组中每个redo log文件的大小一致,并以循环方式使用。InnoDB存储引擎先写redo log文件1,当达到文件的最后是,会切换至文件2,当文件2也被写满时,会再切换到文件1中。
参数innodb_log_file_size指定了redo log文件的大小;innodb_log_files_in_group指定了redo log文件组中redo log文件的数量,默认为2;innodb_mirrored_log_groups指定了日志镜像文件组的数量,默认为1,代表只有一个文件组,没有镜像;innodb_log_group_home_dir指定了日志文件组所在路径,默认在数据库路径下。
redo log文件的大小不能设置得太大,如果设置得太大,在恢复时可能需要很多的时间,另一方面又不能太小,否则可能导致一个事务的日志需要多次切换redo log文件。
InnoDB存储引擎的redo log文件记录关于每个page的更改的物理情况。在事务进行的过程中,不断有redo entry被写入redo log文件中。
redo log结构
Space id | PageNo | OpCode | Data |