数据库文件和存储引擎文件会让我们知道数据库和存储引擎的各种内部状态和工作模式,简单看一下
mysql数据库文件
1.参数文件
mysql数据可以实例启动的时候,数据库会先去读一个配置参数文件,用来寻找数据库的各种文件所在位置以及指定某些初始化参数。若找不到,不会报错,会使用编译mysql时指定的默认值和源代码中指定的参数默认值,但如果数据库实例找不到mysql架构,就会启动失败,架构中(privilege tables)记录了访问该实例的权限
2.日志文件
记录了影响mysql数据库的各种类型的活动,常见的mysql日志文件有:
2.1错误日志(error log)
错误日志对mysql启动,运行,关闭过程进行了记录,是定位mysql异常的首选文件,不仅记录了所有的错误信息,也记录了一些警告和正确的信息
2,2慢查询日志(slow query log)
慢查询日志可以帮助dba定位可能存在问题的sql语句,mysql启动时设定一个阈值,将运行时间超过该值的所有sql语句都记录到慢查询日志,dba可以定时对其进行检查,确认是否有需要优化上的sql,该值默认是10秒
2.3查询日志(log)
查询日志记录了所有对mysql的数据库请求信息,无论这些请求是否得到正确执行,都会被保存下来
2.4二进制日志(binary log)
记录了所有对mysql数据库执行的更改操作,不包括select和show之类的,但是,有时候操作本身并没有导致数据库发生变化,也会被记录下来,如没有引起数据库数据变化的update语句,默认没有开启,需要手动指定参数启动。二进制日志主要有一下作用
2.4.1
恢复数据,用它来恢复数据库文件
2.4.2
复制,mysql集群构建时,用来主从复制数据
2.4.3
审计,可以查看数据进行分析,是否有对数据库进行注入攻击
二进制日志有以下记录格式
2.4.4
statement 记录的是逻辑sql语句
2.4.5
row 记录的是对行的更改情况,某些程度(大范围update),这种消耗空间会非常大
2.4.6
mixed 以上两种格式都有,但默认使用statement(redis的日志文件也是这么记录的)
2.5套接字文件
用于连接mysql实例
2.6pid文件
mysql数据库实例启动时,会将自己的进程ID写入一个文件中,该文件就是pid文件
2.7表结构定义文件
以frm为后缀名的文件,记录了数据库表的结构定义
InnoDB存储引擎文件
1.表空间文件
InnoDB采用的是将存储的数据按照表空间进行存放的方式,默认会有一个初始大小为10mb,名为iddata1的文件,这就是默认的表空间文件。可以配置多个表空间文件,如果用完了,可以自动增长
2.重做日志文件
对InnoDB相当重要,记录了对于InnoDB存储引擎的事务日志。当时实例失败或者介质失败时,就能通过重做日志文件恢复到正常状态,保证了数据的完整性,记录的是每个页的物理更改情况。在事务进行过程中,不断会有日志条目被写入重做日志文件中,而之前介绍的二进制日志文件仅会在事务提交前进行提交,即只写入磁盘一次,不论这个事务有多大。
重做日志文件对InnoDB性能影响很大,文件不能过大,否则恢复时间需要很长时间。也不过小,会导致在事务期间频繁切换重做日志文件
小结
数据库文件和存储引擎文件相辅相成,共同确保数据库正常,高效,安全运行,这里对各种日常用到的文件做了一个简单的介绍,相信会让大家有一个简单,完整的认识,为以后的深入学习打下基础。
这是学习笔记,不喜勿喷,欢迎指正!