参数文件
mysql实例启动时,数据库会先读一个配置参数文件,用来寻找各种文件所在位置以及指定某些初始化参数,这些参数通常定义了某种内存结构有多大等。linux可通过mysql --help | grep my.cnf查询
mysql数据库参数文件和oracle数据库参数文件作用及其类似,不同的是oracle实例启动找不到参数文件,不能进行装载(mount)操作。mysql有所不同,可以不需要参数文件,这时所有参数取决于编译mysql时指定的默认值和源代码中指定参数的默认值。不过在默认的数据库目录找不到mysql架构,也会启动失败。
什么是参数
可以把数据库参数看成一个键/值(key/value)对。可以通过命令show variables查看数据库中所有参数,也可以通过LIKE来过滤参数名。也可以通过global_variables视图来查找,如下所示:
1
2
3
4mysql > select * from
> global_variables
> where variable_name like 'innodb_buffer%'\g;
mysql > show variables like 'innodb_buffer%'\g;参数类型
mysql参数类型分为两类:- 动态(dynamic)参数
- 静态(static)参数
动态参数可以在mysql运行中进行更改,静态参数在整个实例生命周期内不可更改,是只读的。
日志文件
mysql常用日志文件有:
- 错误日志(error log)
- 二进制日志(binlog)
- 慢查询日志(slow query log)
- 查询日志(log)
- 错误日志
错误日志文件对mysql的启动、运行、关闭过程进行了记录。可通过show variables like 'log_error'来定位该文件 - 慢查询日志
慢查询日志可定位存在问题的SQL语句,从而进行SQL语句层面的优化。例如可设置一个SQL语句运行时间阈值,可通过long_query_time来设置阈值,默认10,代表10秒。 - 查询日志
这个日志记录了所有对mysql数据库请求的信息,无论这些请求是否得到了正确的执行。 - 二进制日志
这个日志记录了对mysql数据库执行更改的所有操作,但不包括select和show这类操作,因为这类操作对数据本身并没有修改。
二进制日志有以下作用:- 恢复(recovery):某些数据的恢复需要二进制日志,例如,在一个数据库全备文件恢复后,用户可以通过日志进行point-in-time的恢复
- 复制(replication):其原理与恢复相似,通过复制和执行二进制日志使一台远程的mysql数据库(一般称为slave或standby)与一台mysql数据库(一般称为master或primary)进行实时同步。
- 审计(audit):用户可以通过二进制日志中的信息来进行审计,判断是否有对数据库进行注入的攻击
套接字文件
套接字文件可由参数socket控制。一般在/tmp目录下,名为mysql.sock
pid文件
该文件由参数pid_file控制,默认在数据库目录下,文件名为主机名.pid。
表结构定义文件
不论表采用何种存储引擎,mysql都有一个以frm为后缀名的文件,这个文件记录了该表的表结构定义。
InnoDB存储引擎文件
innodb存储引擎密切相关的文件包括重做日志文件、表空间文件。
- 表空间文件
innodb采用将存储的数据按表空间(tablespace)进行存放的设计。在默认配置下会有一个初始大小为10MB,名为ibdatal的文件。该文件就是默认的表空间文件(tablespace file),可通过参数innodb_data_file_path设置。 - 重做日志文件
默认情况下,innodb存储引擎的数据目录下会有两个名为ib_logfile0和ib_logfile1的文件。在mysql官方手册中将其称为innodb存储引擎的日志文件,更准确的定义应该是重做日志文件(redo log file)。这个文件对innodb存储引擎至关重要,记录了对于innodb存储引擎的事务日志。
当实例或介质失败(media failure)时,重做日志文件就能派上用场。