MySQL技术体系之核心文件

本文主要基于MySQL 5.7版本的数据库环境,总结不一样类型文件用途,让更多的人对MySQL技术体系有更全面、更专业的深度了解。mysql

 

1、参数文件sql

    一、数据库的参数文件my.cnf,客户端、服务端的参数都在这里配置,MySQL实例启动时加载生效。数据库

    二、参数分为动态参数和静态参数,具体能够查看官方手册。json

    三、参数文件总体结构vim

          其中服务端参数能够经过命令show variables like %参数名%来查看当前的参数配置,参数文件总体结构:服务器

        [client]网络

            #客户端参数:端口号、字符编码等多线程

        [mysql]架构

            #服务端参数:字符编码并发

        [mysqlid]

            #服务端参数:端口号、数据目录地址(datadir参数)、并发链接数、各类内存缓冲区大小、慢查询控制、刷盘策略、字符编码、二进制日志文件控制等

        [mysqldump]

            #服务端参数:备份操做

 

2、错误日志文件

    一、数据库的错误日志文件默认存放在数据目录下,以error.log做为文件名称后缀。

    二、记录MySQL启动、运行、关闭过程当中出现的问题,经常使用来辅助定位问题。

    三、Warning日志信息经过对一些优化工做有帮助,好比建议配置explicit_defaults_for_timestamp参数来决定TIMESTAMP类型行为。

 

3、二进制日志文件

    一、数据库的二进制文件默认存放在数据目录下,默认以主机名称做为文件名称,能够设置文件名称前缀、后缀。

    二、只会记录对数据真正进行修改的操做语句DML、DDL,好比select、show默认不会被记录,若是须要记录,则须要开启全量日志功能。

    三、在主从架构环境中,记录master数据库上全部真正执行修改行为的操做记录,而后经过网络发送到slave数据库,完成主从复制。

    四、宕机场景,经过mysqlbinlog命令,实现基于时间点和位置的恢复操做。

    五、执行命令show binary logs能够查看当前binlog文件及值的大小。

    六、执行命令show master status能够查看当前的日志文件名称及状态、文件的偏移量。

    七、mysql-bin.index文件是二进制日志的索引文件,记录产生的二进制日志的序号。

    八、主要参数:

        max_binlog_size

        binlog_cache_size、binlog_cache_disk_use、binlog_cache_use

        binglog_format

        sync_binlog

        expire_logs_days

        binlog_do_db

        log_slave_updates

        binlog_checksum

        log_bin_use_v1_row_events

        binlog_row_image

    九、二进制文件不能直接使用命令cat、tail、head查看,须要经过mysqlbinlog命令查看二进制日志并作格式转换,而后输出到独立的文件bin.log后,使用vim等工具查看。

 

4、慢查询日志文件

    一、数据库的慢查询日志文件默认存放在数据目录下,通常以low.log为文件名称的后缀。

    二、默认是开启记录慢查询日志的。

    三、记录超过参数long_query_time时间的全部SQL语句,从而辅助优化SQL语句。

    四、慢查询日志文件逐渐增大,使用命令vim、cat,或使用命令mysqldumpslow都不方便,能够选择通过采集并发送到专业的分析平台方便查看。这方面的开源工具较多。

    五、文件的主要内容:数据库名称、用户名称、语句及执行耗时状况

 

5、全量日志文件

    一、数据库的全量日志文件general logs默认存放在数据目录下。

    二、记录数据库全部操做的SQL语句,包含了select和show,所以文件将会较大。

    三、默认是关闭状态,不会记录全量日志。

    四、可能会选择临时开启,检测故障。

    五、主要参数:log_output(影响general和show log的存储方式,推荐使用FILE方式存储)

 

6、审计日志文件

    一、数据库的审计日志文件默认存放在数据目录下,通常以audit.log或audit.json为文件名称的后缀。

    二、实时记录网络上的数据库活动,记录、分析、汇报用户访问数据库的行为,主要用于事故的追溯;

    三、官方提供的审计组件须要收费,能够选择第三方开源组件。

 

7、中继日志文件(relay log)

    一、数据库的中继日志文件默认存放在数据目录下。

    二、主从复制场景中,salve服务器上的一个很重要的文件。

           slave服务器I/O线程将master服务器的二进制日志读取并记录到slave服务器本地文件中,而后slave服务器的SQL线程会读取中继日志文件的内容并应用到slave服务器。

 

8、pid文件

    一、数据库的pid文件默认存放在数据目录下,以主机名做为文件名称的前缀。

    二、MySQL数据库是一个单进程多线程模型的数据库。

    三、实例启动后,会将本身惟一的进程号写入到本身的pid文件。

 

9、socket文件

    一、数据库的socket文件默认存放在/tmp/mysql.sock。

    二、mysql.sock文件是服务器与本地客户端进行通讯的UNIX套接字文件。

 

10、表结构文件

    一、以.frm为文件名称的后缀,5.8版本以后,改有系统表空间来实现。

 

11、InnoDB存储引擎文件

    一、InnoDB支持事务,支持MVCC多版本并发控制。

    二、InnoDB是索引组织表,每行记录都实现了三个隐藏字段:

        DB_ROW_ID:

        DB_TRX_ID:每行记录的事务ID

        DB_ROLL_PTR:每行记录的回滚指针

    三、InnoDB有一个全局的事务链表,每一个事务的开始都会把事务ID放到链表中。DB_ROLL_PTR指针用于指向undo记录,构造多版本。

    四、redo日志文件用于记录事务操做的变化,记录的是数据被修改以后的值。工做机制是刷新机制。

    五、undo日志文件用于记录变动前的旧数据

 

欢迎关注个人我的公众号

相关文章
相关标签/搜索