本文主要基于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日志文件用于记录变动前的旧数据
欢迎关注个人我的公众号