1.参数文件
这是MySQL启动时需要读取的配置文件,可以通过mysql --help | grep my.cnf来查看启动时查找的顺序。这些参数的值取决于编译MySQL时指定的默认值或源代码中指定参数的默认值。可以通过show variables查看数据库中的参数,也可以通过like来过滤参数名,还可以通过information_schema.global_variables视图来查找。MySQL参数可以分为两类:
a.静态(static)参数
在整个实例生命周期内都不得更改,只读(read only)的。
b.动态(dynamic)参数
在整个实例生命周期内可以更改。通过命令SET | [global | session] system_var_name=expr | [@@global. | @@session. |@@]system_var_name=expr来改变值。其中global表示该参数是基于整个实例的生命周期的,而session是基于当前回话的。
2.日志文件
记录了影响MySQL数据库的各种类型活动。以下配置文件的参数影响二进制日志记录的信息和行为:max_binlog_size、binlog_cache_size、sync_binlog、binlog-do-db、binlog-ignore-db、log-slave-update、binlog_format。这些参数的含义是什么,我会在以后的博客中有一篇专门来讲解参数,这里就不多说啦。常见的日志文件有:
a.错误日志(error log)
记录了MySQL的启动、关闭、运行过程。在遇到问题时应该首先查看该文件以便于定位问题。该文件不仅记录了所有的错误信息,也记录一些警告信息或正确的信息。通过show variables like ‘log_error‘来定位该文件的位置。在默认情况下,错误文件的文件名为服务器的主机名。
b.慢查询日志(slow query log)
记录可能存在"问题"的SQL语句,从而进行SQL语句层面的优化。其格式有:FILE和TABLE(information_schema.slow_log)两种格式,可以通过参数log_output(动态参数)选择输出的格式。使用mysqldumpslow命令来查看慢日志文件的内容。被记录到该文件的几种情况:
1.通过参数long_query_time来设置被记录到该文件的阀值。会记录运行时间超过(大于)该值的所有SQL语句。
2.通过参数long_queries_not_using_indexes来设置将没有使用索引的SQL语句记录到慢日志文件中。MySQL5.6版本新增一个参数log_throttle_queries_not_using_indexes来设置每分钟记录到slow log的且未使用索引的SQL语句的次数(主要是为了频繁记录防止slow log文件不断增大)。
3.通过参数long_query_io指定将超过设置逻辑IO次数的SQL语句记录到slow log文件中。
c.二进制日志(binlog)
记录了对MySQL数据库执行IUD操作。其作用主要有以下几种:
1.恢复(recovery) 某些数据的恢复需要二进制日志.如,在一个数据库全备文件恢复后,用户可以通过二进制日志进行point-in-time的恢复
2.复制(replication) 主要用在master-slave上。
3.审计(audit) 通过二进制日志中的信息来进行审计,判定是否有对数据库进行注入的攻击。
d.查询日志(log)
记录了所有对MySQL数据库请求的信息,无论这些请求是否得到正确的执行。默认文件名为主机名.log。从MySQL5.1版本开始也可以将该日志记录到information_chema.general_log表中。
3.套接字文件
在unix下本地连接MySQL可以采用unix域套接字方式,这种方式需要一个套接字(socket)文件。套接字文件可有参数socket控制一般在/tmp目录下且名称为mysql.sock。
4.pid文件
当MySQL实例启动是,会将自己的进程ID写入一个文件中(pid文件)。该文件可有参数pid_file控制,默认位于数据库目录下,文件文件名为主机名.pid.
5.表结构定义文件
MySQL数据的存储是根据表进行的,每个表都会有与之对应的文件。不论表采用何种存储引擎,MySQL都有一个以.frm为后缀名的文件,这个文件记录了该表的表结构定义。
6.InnoDB存储引擎文件
上边介绍的文件都是MySQL数据库本身的文件,和存储引擎无关。除了这些文件之外,每个表存储引擎还有其自己独有的文件。与InnoDB存储引擎密切相关的文件包括重做日志文件(redo log)和表空间文件(tablespace)。
1.表空间文件
InnoDB采用将存储的数据按表空间进行存放。默认配置下会有一个初始大小为10M名为ibdata1的文件。该文件就是默认的表空间文件,可通过参数innodb_data_file_path对其进行设置。默认情况下InnoDB存储引擎的表的数据都会记录到该共享表空间中,但是可以通过参数innodb_file_per_table设置,为每个基于InnoDB存储引擎的表产生一个独立表空间。该独立表空间只是存储该表的数据、索引和插入缓冲BITMAP等信息,其余的信息还是存放在默认的表空间中。
2.重做日志文件
默认情况下在数据目录下会有两个名为ib_logfile0和ib_logfile1的文件。记录了对于InnoDB存储引擎的事务日志。当数据库宕机时,InnoDB存储引擎会使用重做日志恢复到故障之前的时刻,以此来保证数据的完整性。以下参数影响重做日志文件的属性:innodb_log_file_size、innodb_log_files_in_group、innodb_mirrored_log_groups、innodb_log_group_home_dir