您的位置:首页 > 数据库 > MySQL

Mysql的物理文件组成

2016-09-20 15:08 393 查看

一.日志文件

1.1 错误日志

    记录了mysql运行过程中较为严重的错误信息,以及启动和关闭的信息。
默认命名hostname.err
可以在参数文件中加上 --log-error[=file_name]修改目录名和文件名
flush logs 命令: 备份旧日志文件并生成新的日志文件。备份文件名以'.old'结尾

2. 二进制日志: Binary Log & Binary Log Index

   binlog,在参数文件中添加"--bin-log[=file_name]"打开binlog
   binlog:记录的是操作mysql的所有修改数据库的操作。
   
   binlog附加选项参数
 --max_binlog_size : binlog的日志文件大小,一个日志满了后会重新写入一个文件。
 --binlog-do-db=db_name : 对某个db_name记录bin-log日志
 --binlog-ignore-db=dbname : 与--binlog-do-db=db_name 完全相反,忽略db_name的binlog日志
 
 mysql-bin.index 文件(binary log index)记录所有的Binary Log 的绝对路径
 
3.更新日志:update log 

功能跟binlog类似,以文本方式记录。mysql 5.0版本后很少使用更新日志了。
 
4.查询日志

   记录mysql中所有的query,通过"--log[=fina_name]"来打开该功能。记录了所有的query
包括select,所以体积很大,开启后对性能有较大的影响。慎用,一般用于跟踪某些特殊的sql性能
才会短暂开启该功能。默认的查询日志文件名为hostname.log

5.慢查询日志: slow query log 

记录的是执行时间长的sql,也就是常说的slow query ,通过设 --log-slow-queries[=file_name]
来打开该功能,并设置记录位置和文件名,默认文件名为hostname-slow.log 
  格式为文本,记录了执行时间,消化时间,执行用户,链接主机信息等

6.innodb的在线redo日志:innodb redo log

  redo记录了innodb所做的所有物理变更和事物信息,通过redo和undo信息。Innodb保证了在任何情况下
的事物的安全性。 默认存放在data目录下,可以通过innodb_log_group_home_dir来更改设置日志的存放位置
通过innodb_log_files_in_group设置日志的数量

mysql> show variables like 'innodb_log_files_in_group';
+---------------------------+-------+
| Variable_name             | Value |
+---------------------------+-------+
| innodb_log_files_in_group | 2     |
+---------------------------+-------+
1 row in set (0.00 sec)

二.数据文件

mysql每一个数据库都都会在定义好的数据目录下存在以数据库名字命名的文件夹,用来存放该数据库中各种表的数据文件。没个数据文件的扩展名不一样。如MyISAM用".MYD"作为扩展名,innodb用".ibd",Archive用"".arc,CSV用".csv"等等

1.frm文件

  与表相关的元数据信息存放在.frm文件中。包括表结构定义信息都能。不论是什么存储引擎,每个表都会有一个以表名命名的.frm文件。所有的.frm文件都存放在所属数据库的文件夹下面。

2.myd文件
  .myd文件是MyISAM存储引擎专用,存放MyISAM表的数据。每一个MyISAM表都会有一个.MYD文件与之对应,同样存放于所属数据库的文件夹下,和".frm"文件在一起

3.myi文件

 .myi文件也是专属于MyISAM存储引擎的,主要存放MyISAM表索引相关信息。对于MyISAM存储来说,可以被cache的内容主要来源于.myi文件中。每一个MyISAM表对应一个.MYI文件.

4.ibd文件和ibdata文件

  这两种文件都是存放innodb的数据文件,之所以有两种文件存放innodb的数据(包括索引),是因为innodb的数据存储方式能通过配置来决定是使用共享表空间存放数据,还是独享表空间存储数据。
独享表空间存储使用.idb文件存储。且每个表一个单独.idb文件;如果用共享存储空间存放数据,则会使用ibdata文件存放,所有表共同使用一个ibdata文件。

ibdata文件可通过 innodb_data_home_dir 和 innodb_data_file_path 两个参数共同配置组成;

innodb_data_home_dir:配置数据文件存放目总目录
innodb_data_file_path :配置每一个文件的名称
也可以不用 innodb_data_home_dir 直接在innodb_data_file_path 中使用绝对路径innodb_data_file_path可以一次配置多个ibdata文件。可以指定大小,自动扩展,但是innodb限制了仅仅只有最后一个ibdata文件能够配置成自动扩展类型。当我们需要添加新的ibdata文件的时候只能添加在
innodb_data_file_path 配置的最后,而且必须重启才能完成ibdata的添加工作。不过我们使用独享表空间存储方式的话,就不会有这养的问题,但是用裸设备,每个标一个裸设备,可能造成裸设备数量非常大,而且不容易控制大小,实现比较困难。

5.Replication相关文件

1.master.info文件
   master.info文件存放于Slave端的数据目录下,里面存放了该Slave的Master端的相关信息。包括
Master的主机地址,链接用户,链接密码,链接接口,当前日志位置,已经读取到的日志位置等信息。

2.relay log和relay log index 

mysql-relay-bin.xxxn文件用于存放Slave端I/O线程从Master端读取到binlog信息,然后由Slave端的,SQL线程从该relay log 中读取并解析相应的日志信息,转化成Master所执行的SQL语句,然后在Slave端应用
mysql-relay-bin.index 文件的功能 类似于mysql-bin.index同样记录日志的存放未指定绝对路径,relay log路径

3.relay-log.info 文件

类似于master.info,它存放通过Slave的I/O线程写入到本地的relay log 的相关信息。供Slave端的sql线程以及某些管理操作随时能够获取当前复制相关信息。

三.其他文件

1. system config file 

mysql系统配置文件my.cnf 在linux/Unix下默认存放在/etc目录下。
windows环境一般存放在c:/windows目录下面。my.cnf 文件包含多种参数组(group)
每一种参数组都通过中括号给定了固定组名,如[mysqld]组中包含了服务器启动的时候的
初始化参数,[client]组中包含着客户端工具程序可以读取的参数,此外还有其他针对于各种客户端软件
的特定参数组,如mysql程序使用[mysql],mysqlchk使用的[mysqlchk]等等。

2.pid file

pid file 是mysqld应用程序在Unix/Linux环境下的一个进程文件,和许多其他Unix/Linux服务端程序一样,
存放自己的进程id.

3.socket file

socket file文件也是在Unix/Linux 环境下才有的,用户在Unix/Linux 环境下客户端链接可以不通过tcp/ip 网络而直接用unix socket 来链接Mysql
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息