[TOC]
文件
错误日志
错误日志文件对mysql的启动运行关闭过程进行了记录
SHOW VARIABLES LIKE 'log_error'
慢查询日志
默认不开启,需要手动设置log_slow_queries设置为true
select * from mysql.slow_log;
查询日志
记录了所有对mysql数据库请求的信息,无论是否得到正确的执行
二进制文件 binlog
记录了对mysql数据库执行更改的所有操作,然后操作本身没有对数据库发生变化,也可能进入二进制文件
二进制文件主要有以下几种作用
- 恢复: 某些数据的恢复需要二进制日志,
- 复制: 通过复制和执行二进制日志
- 审计: 通过二进制日志中的信息来进行审计
参数
- max_binlog_size 指定了单个二进制文件的最大值,如果超过该值则产生新的二进制日志文件
- binlog_cache_size 所有未提交的二进制文件会记录到一个缓存中,等该事务提交,直接将缓存写入到二进制日志文件
- sync_binlog 二进制日志并不是每次写的时候都写入到磁盘,可以设置次数
- binlog-do-db 和binlog-ingore-db 表示需要或忽略写入那些库的日志
- log-slave-update slave是否写binlog
- binlog_format
- statement格式: sql语句
- row: 解决在readcommited情况下主从不一致,但是文件大小会增加,但在repeatedread由于next-key lock解决了该问题
- mixed
innoDB存储引擎文件
表空间文件
innodb采用将存储的数据按照表空间进行存放的设计,在默认配置下会有一个初始大小为10mb,名为ibdata1的文件,该文件就是默认的表空间文件,用户可以通过参数innodb_data_file_path对其进行设置
innodb_file_per_table 每个表产生独立的.ibd文件
重做日志文件
在默认情况下,innodb的数据目录下会有两个名为ib_logfile0和ib_logfile1的文件,这个就是重做日志文件,可以使用重做日志恢复到宕机前的数据,保护数据完整性
每个innodb至少有一个重做日志组,且每个组内至少有两个重做日志文件,我们可以创建多个重做日志组到不同磁盘,提高重做日志的高可用性,并且在组内写完一个重做日志文件后再写另一个重做日志文件
参数介绍
- innodb_log_file_size 指定每个重做日志文件的大小
- innodb_log_files_in_group 重做日志文件组中文件个数
- innodb_mirrored_log_groups 重做日志文件组个数
- innodb_log_group_home_dir 重做日志文件目录
重做日志写入过程
重做日志文件的写入不是直接写,而是先写到重做日志缓冲,然后按照一定条件写入日志文件,并且由于在磁盘写入时是按照扇区为单位进行写入,因此写入必定成功,不用进行doublewrite
redo log和binlog区别
- 二进制文件包括inndo,myisam,heap等其他存储引擎日志,而redolog只是innodb本身的事务日志
- 记录的内容不同: binlog记录一个事务的具体操作内容,而重做日志记录每个页更改的物理情况
- 写入时间不同: binlog只在日志提交时记录,redolog在事务进行中也会写入