MySQL物理文件组成

(一)日志文件

1、错误日志

    错误日志记录了MySQL Server运行过程中所有较为严重的警告和错误信息,以及MySQL Server每次启动和关闭的详细信息。在默认情况下是关闭的,若要开启该功能需要在启动时开启log-error选项,默认存放在数据目录下,以hostname.err命名,可在配置中(以下不说明均指my.cnf)加入:log-error=“D:\mysql.err”,则错误日志保存在D盘mysql.err文件中。

    注:1、包括以下日志,理论上在配置文件中加入和在启动时通过命令参数加入都是可以的,但是笔者在自己电脑上测试时通过命令参数并没有起作用,且需要设置的很多时重启参数中可能会忘记加入某设置,所以建议加载my.cnf中.

        2、flushlogs命令:告诉MySQL备份旧日志文件并生成新的日志文件,备份文件以“.old”结尾。

2、二进制文件

    通过设置:log-bin=“存储路径及文件名”打开记录功能,会将所有修改数据库数据的Query以二进制形式记录到日志文件中,包括:Query语句,每一条Query执行的时间,消耗资源,相关事务信息等。

    注:binlog是事务安全的

    常用参数:

        1)--max_binlog_size:设置binlog的最大存储上限

        2)--binlog-do-db:需要对某个数据库记录binlog

        3)--binlog-ignore-db:指定忽略某个数据库的binlog记录

        注:2)和3)中数据库不是指操作的数据库,而是Query所处的数据库,例如Query在A库,此时更新B库,则指的是A库相关操作是否要记录binlog中

        mysql-bin.index文件记录所有Binary Log的绝对路径

3、更新日志

    自从MySQL增加了binlog功能后,就很少使用更新日志了。从5.0版本开始,MySQL已经不再支持更新日志。

4、查询日志

    记录MySQL中所有的Query,可通过log=“存储路径及文件名”开启该功能。

    注:由于该日志体积比较大,开启后对性能也有较大的影响,应该慎用

5、慢查询日志

    记录执行时间较长的Query。通过设置log-slow-qyeries=“存储路径及文件名”开启该功能。

6、InnoDB的在线REDO日志

    InnoDB的事务安全性主要是通过在线REDO日志和记录在表空间的UNDO信息来保证的。


(二)数据文件

1、.frm文件

    与表相关的元数据信息,包括表结构的定义信息等。

2、.MYD文件

    是MyISAM存储引擎专用的,存放MyISAM表的数据

3、.MYI文件

    是MyISAM存储引擎专用的,存放MyISAM表的索引相关信息

4、.ibd文件和ibdata文件

    都是用来存放InnoDB数据的文件,包括索引。

    1)独享表空间:使用.ibd文件来存放数据,每个表一个.ibd文件。

    其缺点:如果使用裸设备,每个表一个裸设备,可能造成裸设备数量非常大,而且不太容易控制,实现比较困难

    2)共享存储表空间:使用ibdata文件,所有表共同使用一个或多个ibdata文件,可通过innodb_data_home_dir和innodb_data_file_path两个参数共同配置。

    其缺点:InnoDB限制了只有最后一个ibdata文件能够配置成自动扩展类型。当我们需要添加新的ibdata文件时,只能添加在innodb_data_file_path配置的最后,而且必须重启MySQL才能完成添加工作。

    这两种方式各有优缺点,但是考虑到扩展性以及可借鉴其他方式进行控制,故推荐使用.ibd文件存储数据

(三)Replication相关文件

1、master.info文件

    存在于slave端的数据目录下,存放了该Slave的Master端的相关信息。

2、relay log 和 relay log index

    1)mysql-relay-bin.xxxxn文件用于存放Slave端的I/O线程从Master端读取的Binary Log信息,然后由Slave端的SQL线程从该relay log中读取并解析相应的日志信息,转化成Master所执行的Query语句,接着在Slave端应用,达到主从备份的目的

    2)mysql-relay-bin-index文件记录Relay Log存放位置的绝对路径

3、relay-log-info文件

    存放通过Slave的I/O线程写入本地的relay log相关信息,以便Slave端的SQL线程及某些管理操作随时能够获取当前复制的相关信息。

(四)其他文件

1、my.cnf

    MySQL的系统配置文件,linux下默认在/etc目录下。配置中包含多种参数选项组,每一种参数组都通过中括号给了固定的组名,如:[client]、[mysqld]等

2、pid文件

    是mysqld应用程序在Unix/Linux环境下的一个进程文件,存放着自己的进程id

3、Socket文件

    Unix/Linux环境下,客户端连接可以不通过TCP/IP网络,而直接使用Socket来连接MySQL。



参考:《MySQL性能调优与架构设计》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值