redo log
redo log又称重做日志文件,用于记录事务操作的变化,记录的是数据修改之后的值,不管事务是否提交都会记录下来。在实例和介质失败(media failure)时,redo log文件就能派上用场,如数据库掉电,InnoDB存储引擎会使用redo log恢复到掉电前的时刻,以此来保证数据的完整性。
redo log日志文件
每个InnoDB存储引擎至少有1个重做日志文件组(group),每个文件组至少有2个重做日志文件,如默认的ib_logfile0和ib_logfile1。
redo log 参数
- innodb_log_file_size:指定每个redo日志大小,默认值48MB(50331648/1024/1024)
- innodb_log_files_in_group:指定日志文件组中redo日志文件数量,默认为2
- innodb_log_group_home_dir:指定日志文件组所在路径,默认值
./ ,指mysql的数据目录datadir
文件格式
每个WAL文件的前2048字节存放文件头信息。文件头后面是WAL内容,按照BLOCK为单位分割,BLOCK大小默认为512字节。日志文件布局如下图所示:
- LOG_GROUP_ID:该log文件所属的日志组,占用4个字节;
- LOG_FILE_START_LSN: 该log文件记录的开始日志的lsn,占用8字节;
- LOG_FILE_WAS_CRATED_BY_HOT_BACKUP 备份程序所占用的字节数,共占用32字节
- LOG_CHECKPOINT_1/LOG_CHECKPOINT_2 两个记录InnoDB checkpoint信息的字段,分别从文件头的第二个和第四个block开始记录,只使用日志文件组的第一个日志文件。 从地址2KB偏移量开始,其后就是顺序写入的各个日志块(log block)。
参考
http://mysql.taobao.org/monthly/2020/01/06/ https://learnku.com/articles/49614 https://blog.csdn.net/wanbin6470398/article/details/81941586 https://juejin.cn/post/6860252224930070536
|