美文网首页
2. Mysql技术内幕-日志文件

2. Mysql技术内幕-日志文件

作者: 安桐530 | 来源:发表于2019-02-14 11:31 被阅读0次

    [TOC]

    文件

    错误日志

    错误日志文件对mysql的启动运行关闭过程进行了记录
    SHOW VARIABLES LIKE 'log_error'

    慢查询日志

    默认不开启,需要手动设置log_slow_queries设置为true
    select * from mysql.slow_log;

    查询日志

    记录了所有对mysql数据库请求的信息,无论是否得到正确的执行

    二进制文件 binlog

    记录了对mysql数据库执行更改的所有操作,然后操作本身没有对数据库发生变化,也可能进入二进制文件

    二进制文件主要有以下几种作用

    1. 恢复: 某些数据的恢复需要二进制日志,
    2. 复制: 通过复制和执行二进制日志
    3. 审计: 通过二进制日志中的信息来进行审计

    参数

    1. max_binlog_size 指定了单个二进制文件的最大值,如果超过该值则产生新的二进制日志文件
    2. binlog_cache_size 所有未提交的二进制文件会记录到一个缓存中,等该事务提交,直接将缓存写入到二进制日志文件
    3. sync_binlog 二进制日志并不是每次写的时候都写入到磁盘,可以设置次数
    4. binlog-do-db 和binlog-ingore-db 表示需要或忽略写入那些库的日志
    5. log-slave-update slave是否写binlog
    6. binlog_format
      1. statement格式: sql语句
      2. row: 解决在readcommited情况下主从不一致,但是文件大小会增加,但在repeatedread由于next-key lock解决了该问题
      3. mixed

    innoDB存储引擎文件

    表空间文件

    innodb采用将存储的数据按照表空间进行存放的设计,在默认配置下会有一个初始大小为10mb,名为ibdata1的文件,该文件就是默认的表空间文件,用户可以通过参数innodb_data_file_path对其进行设置

    innodb_file_per_table 每个表产生独立的.ibd文件


    image

    重做日志文件

    在默认情况下,innodb的数据目录下会有两个名为ib_logfile0和ib_logfile1的文件,这个就是重做日志文件,可以使用重做日志恢复到宕机前的数据,保护数据完整性

    每个innodb至少有一个重做日志组,且每个组内至少有两个重做日志文件,我们可以创建多个重做日志组到不同磁盘,提高重做日志的高可用性,并且在组内写完一个重做日志文件后再写另一个重做日志文件


    1.png

    参数介绍

    1. innodb_log_file_size 指定每个重做日志文件的大小
    2. innodb_log_files_in_group 重做日志文件组中文件个数
    3. innodb_mirrored_log_groups 重做日志文件组个数
    4. innodb_log_group_home_dir 重做日志文件目录

    重做日志写入过程


    1.png

    重做日志文件的写入不是直接写,而是先写到重做日志缓冲,然后按照一定条件写入日志文件,并且由于在磁盘写入时是按照扇区为单位进行写入,因此写入必定成功,不用进行doublewrite

    redo log和binlog区别

    1. 二进制文件包括inndo,myisam,heap等其他存储引擎日志,而redolog只是innodb本身的事务日志
    2. 记录的内容不同: binlog记录一个事务的具体操作内容,而重做日志记录每个页更改的物理情况
    3. 写入时间不同: binlog只在日志提交时记录,redolog在事务进行中也会写入

    相关文章

      网友评论

          本文标题:2. Mysql技术内幕-日志文件

          本文链接:https://www.haomeiwen.com/subject/ewnseqtx.html