MYSQL-重做日志

主要作用:
1.当数据库实例或网络介质出问题,重做日志能够进行恢复,保证innodb引擎数据的完整性

内部构成:
1.每个innodb存储引擎至少有一个重做日志文件组(group)
2.每个日志文件组下至少有两个重做日志文件,默认为ib_logfile0、ib_logfile1
3.可以设置多个镜像日志文件组,可存放到不同磁盘,来提高可靠性

写入原理:
1.重做日志先写入重做日志缓冲池
2.按照一定条件写入重做日志文件,例如:master线程每秒将缓冲池中重做日志数据写入重做日志文件
3.首先写入重做日志组中的日志文件1即ib_logfile0,该文件写满后,继续向ib_logfile2中写,日志文件2也写满后,继续向ib_logfile0中写,循环执行

配置参数:
1.innodb_log_file_size:指定重做日志文件大小
2.innodb_log_file_in_group:指定日志文件组中重做日志文件的个数,默认2
3.innodb_mirrored_log_groups:指定日志镜像文件组的数量,默认1
4.innodb_log_group_home_dir:指定日志文件组所在路径,默认数据库路径下
5.innodb_flush_log_at_trx_commit:指定提交事务时是否刷新缓冲池重做日志数据到日志文件,0表示提交事务时不将事务的重做日志写入磁盘上的日志文件,1表示在事务提交时同步写入重做日志,2表示在事务提交时异步写入重做日志,默认1

重做日志文件和二进制文件区别:
1.记录类型不一样:二进制文件会记录所有引擎操作的日志记录,重做日志只记录innodb引擎相关的事务性操作
2.记录内容不一样:二进制文件会记录的具体操作,比如sql或行的修改,重做日志记录关于页的更改情况
3.记录时间不一样:二进制文件在事务提交前记录日志,重做日志在事务运行时不断记录日志

猜你喜欢

转载自blog.csdn.net/ignorewho/article/details/80580764