写入redo log buffer过程与redo log file
-
Mini-Transaction
-
redo 日志写入log buffer
-
redo log block的结构图
-
redo log file
相关参数设置
1、innodb_log_group_home_dir :指定 redo log 文件组所在的路径,默认值为 ./ ,表示在数据库的数据目录下。MySQL的默认数据目录
( var/lib/mysql )下默认有两个名为 ib_logfile0 和ib_logfile1 的文件,log buffer中的日志默认情况下就是刷新到这两个磁盘文件中。
此redo日志文件位置还可以修改。
2、innodb_log_files_in_group:指明redo log file的个数,命名方式如:ib_logfile0,iblogfile1...iblogfilen。默认2个,最大100个。
# 查看
show variables like 'innodb_log_files_in_group';
3、innodb_flush_log_at_trx_commit:控制 redo log 刷新到磁盘的策略,默认为1。
4、innodb_log_file_size:单个 redo log 文件设置大小,默认值为 48M 。最大值为512G,注意最大值指的是整个 redo log 系列文件之和,
即(innodb_log_files_in_group * innodb_log_file_size )不能大于最大值512G。
# 查看
show variables like 'innodb_log_file_size';
根据业务修改其大小,以便容纳较大的事务。编辑my.cnf文件并重启数据库生效
vim /etc/my.cnf
innodb_log_file_size=200M
-
日志组文件
-
checkpoint
-
如果 write pos 追上 checkpoint ,表示日志文件组满了,这时候不能再写入新的 redo log记录,MySQL 得停下来,清空一些记录,把 checkpoint 推进一下