日志文件名:
1.innodb_log_group_home_dir
参数指定的目录下有两个文件:ib_logfile0
,ib_logfile1
2.该文件被称为:重做日志文件(redo log file),记录Innodb
存储引擎的事务日志。至关重要!!!
3.例如:服务器意外宕机导致实例失败,Innodb存储引擎利用重做日志恢复到宕机前的状态,以此保证数据的完整性。
日志文件组:
1.每个Innodb存储引擎至少有1个重做日志文件组,每个组至少包含2个重做日志文件(ib_logfile0,ib_logfile1).
2.可以通过设置多个镜像日志组(mirrored log groups),将不同组放到不同磁盘,提高重做日志的高可用性。
3.日志组中的文件大小是一致的,以循环的方式运行。文件1写满时,切换到文件2,文件2写满时,再次切换到文件1.
日志文件参数:
1.innodb_log_file_size
重做日志文件的大小。
2.innodb_log_files_in_group
指定重做日志文件组中文件的数量,默认2
3.innodb_mirrored_log_groups
指定了日志镜像文件组的数量,默认1
4.innodb_log_group_home_dir
指定日志文件组所在的路径,默认./ ,表示在数据库的数据目录下。
重做日志文件大小设置
太大:恢复时可能需要很长时间
太小:可能导致一个事务需要多次切换重做日志文件;会导致async checkpoint
,导致性能抖动。
错误日志警告信息:
InnoDB:ERROR:the age of the last checkpoint is 9433645,InnoDB:which exceeds the log group capacity 9433498.
解析:重做日志有个capacity
变量,代表最后的检查点不能超过这个阈值,如果超过,必须将缓冲池中脏页列表(flush list
)中的部分脏数据页写回磁盘,这是会导致用户线程的阻塞。
二进制日志和重做日志的对比:
1.类别
二进制日志:记录MySQL
数据库相关的日志记录,包括InnoDB,MyISAM等其它存储引擎的日志。
重做日志:只记录InnoDB
存储引擎本身的事务日志。
2.内容
二进制日志:记录事务的具体操作内容,是逻辑日志。
重做日志:记录每个页的更改的物理情况。
3.时间
二进制日志:只在事务提交完成后进行写入,只写磁盘一次,不论这时事务量多大。
重做日志:在事务进行中,就不断有重做日志条目(redo entry)写入重做日志文件。
重做日志条目
1.条目基本格式
redo_log_type
(1字节) space
(压缩后可能<4字节) page_no redo_log_body
reod_log_type
: 占用1字节,表示重做日志类型。各种不同操作有不同的重做日志格式,但有基本的格式。
space
:表空间的ID,采用压缩的方式,占用空间可能小于4字节。
page_no
:页的偏移量,同样采用压缩方式
redo_log_body
:每个重做日志的数据部分,恢复时需要调用相应的函数解析。
写入过程
1.重做日志信息 先写入 重做日志缓冲 再按一定条件顺序写入重做日志文件!
2.redo log buffer
向 redo log file
写,是按512个字节,也就是一个扇区的大小进行写入。扇区是写入的最小单位,一定能写入成功,因此过程中不需要double write
.
1.在系统遇到故障的恢复过程中,可以修复被未完成的事务修改的数据。
2.MySQL
为了提高数据存取的效率,减少磁盘操作的频率,对数据的更新操作不会立即写到磁盘上,而是把数据更新先保存在内存中,积累到一定程度,再集中进行磁盘读写操作。这样就存在一个问题:一旦出现宕机或者停电等异常情况,内存中保存的数据更新操作可能会丢失。这个时候就可以通过读取重做日志中记录的数据更新操作,把没来得及写到磁盘上的数据更新写到磁盘上,确保数据的完整性。
查看重做日志有几个:
mysql> SHOW VARIABLES LIKE '%innodb_log_files_in_group%';
+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| innodb_log_files_in_group | 4 |
+---------------------------+-------+
1 row in set, 1 warning (0.00 sec)
变量 innodb_log_files_in_group
值的取值范围是 1~4,这四个文件分别用于记录不同的操作:
1、用户创建表的插入操作;
2、用户创建表的更新和删除操作;
3、临时表的插入操作;
4、临时表的更新和删除操作。
未经允许不得转载:任鹏个人博客 » MySQL 中的重做日志(redo log)
最新评论
Forex wiki. https://lt.forex-stock-bitcoin-brokers.com
Magnificent items from you, man. I have take note your stuff
Following on from the 3rd March Meetings held by economic de
It is remarkable, rather valuable message dfgdlfg2131.32
一般都会有一个沙盒期的,过了沙盒期就会慢慢放出来
百度不收录是应为是新站的原因吗?
The spike in consumer prices that left inflation at a four-d