binlog、redo log、undo log、relay log刚开始学习的来说各种log到底是干什么的还理解不清楚:
binlog:用于逻辑复制及可能的增量备份恢复策略上,只记录对数据发生改变的日志,记录模式有三种 row、statement、mixed,binlog在mysql内部有协调内部XA的作用。
redo log:The redo log is a disk-based data structure used during crash recovery to correct data written by incomplete transactions 重做日志也叫事务日志,记录数据页物理修改记录,用于宕机恢复未刷新到硬盘的数据。redo log默认由2个文件文件(ib_logfile0,ib_logfile1)循环写入,在这当中也会记录checkpoint,当恢复时只需恢复小于checkpoint的日志即可,默认两个个文件大小总和为48M,最大支持512G,可以配置innodb_log_file_size参数修改大小,也可以改变innodb_log_group_home_dir参数把redo log放于指定位置,可以合理利用不同磁盘的IO。
undo log:一般叫着回滚日志,包含undo log及rollback segment,记录一个事务修改之前的记录,即用于事务回滚也有一致性非锁定读的作用,一致性非锁定读就是innodb多版本控制的方式,读取当前执行时间数据库行中的数据,不会受正在对该数据精细update、delete的影响。
relay log:中继日志,主从io_thread读取master发送的binlog转换为自己可以执行的语句放于relay log中,sql_thread读取并执行