Mysql物理文件组成详解

一、 日志文件
通过 show variables like 'log_%'; 可以看到mysql的日志配置信息
  1. 错误日志(Error Log)
记录了mysql运行过程中较为严重的警告和错误信息以及Mysql每次启动和关闭的详细信息,利用 MySQL 的 FLUSH LOGS 命令来告诉 MySQL 备份旧日志文件并生成新的日志文件。 备份文件名以“.old”结尾。
  1. 二进制日志:Binary Log & Binary Log Index
打开了记录的功能之后,MySQL 会将所有修改数据 库数据的 query 以二进制形式记录到日志文件中。当然,日志中并不仅限于 query 语句简单,还包括每一条 query 所执行的时间,所消耗的资源,以及相关的事务信息,所以 binlog 是事务安全的。
binlog 还有其他一些附加选项参数:
    1. “--max_binlog_size”设置 binlog 的最大存储上限,当日志达到该上限时,MySQL 会 重新创建一个日志开始继续记录。不过偶尔也有超出该设置的 binlog 产生,一般都是因为 在即将达到上限时,产生了一个较大的事务,为了保证事务安全,MySQL 不会将同一个事务 分开记录到两个 binlog 中。
    2. “--binlog-do-db=db_name”参数明确告诉 MySQL,需要对某个(db_name)数据库记 录 binlog,如果有了“--binlog-do-db=db_name ” 参数的显式指定,MySQL 会忽略针对其他 数据库执行的 query,而仅仅记录针对指定数据库执行的 query。
    3. “--binlog-ignore-db=db_name ”“--binlog-do-db=db_name ” 完全相反,它显式指 定忽略某个(db_name)数据库的 binlog 记录,当指定了这个参数之后,MySQL 会记录指定 数据库以外所有的数据库的 binlog。
    4. “--binlog-ignore-db=db_name”“--binlog-do-db=db_name”两个参数有一个共同 的概念需要大家理解清楚,参数中的 db_name 不是指 query 语句更新的数据所在的数据库, 而是执行 query 的时候当前所处的数据库。不论更新哪个数据库的数据,MySQL 仅仅比较当 前连接所处的数据库(通过 use db_name 切换后所在的数据库)与参数设置的数据库名,而 不会分析 query 语句所更新数据所在的数据库。
  1. 更新日志:update log
更新日志是 MySQL 在较老的版本上使用的,类似binlog,但以简单文本格式记录内容
  1. 查询日志:query log
查询日志记录 MySQL 中所有的 query,开启后对性能影响比较大,一般只用于跟踪某些特殊的sql性能问题才会短暂打开
  1. 慢查询日志:slow query log
慢查询日志中记录的是执行时间较长的 query,慢查询日志采用的是简单的文本格式,其中记录了语句执行的时刻,执行所消耗的时间、执行用户、连接主机等,MySQL 还提 供了专门用来分析满查询日志的工具程序 mysqlslowdump


二、 数据文件
     默认情况下,在mysql的data目录下会有以数据库名字命名的文件夹,用来存放该数据库中各种表数据文件,不同的 MySQL 存储引擎有各自不同 的数据文件,存放位置也有区别。多数存储引擎的数据文件都存放在和 MyISAM 数据文件位 置相同的目录下,但是每个数据文件的扩展名却各不一样。如 MyISAM 用“.MYD”作为扩展 名,Innodb 用“.ibd ” ,Archive 用“.arc ” ,CSV 用“.csv ” ,等等
  1. .frm文件:存储与表相关的元数据(meta)信息,包括表结构的定义信息等
  2. .MYD文件:是 MyISAM 存储引擎专用,存放 MyISAM 表的数据。每一个 MyISAM 表都会 有一个 “.MYD ” 文件与之对应
  3. .MYI文件:专属于 MyISAM 存储引擎,主要存放MyISAM表的索引相关信息
  4. .ibd文件和ibdata文件:存放Innodb数据的文件,Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。
    1. 独享表空间存储方式使用.ibd文件,每个表一个".ibd"文件
    2. 共享存储表空间则使用ibdata文件来存放,所有表共同使用一个(或多个,可自行配置)ibdata文件

三、 Replication文件
  1. master.info:存在于Slave端的数据目录,存放了该Slave的Master端的相关信息,包括Master的主机地址,连接用户,连接端口,当前日志位置,已经读取到的日志位置等
  2. relay log 和 relay log index
    1. sql-relay-bin.xxxxxn 文件用于存放 Slave 端的 I/O 线程从 Master 端所读取到 的 Binary Log 信息,然后由 Slave 端的 SQL 线程从该 relay log 中读取并解析相应的 日志信息,转化成 Master 所执行的 SQL 语句,然后在 Slave 端应用。
    2. mysql-relay-bin.index 文件的功能类似于 mysql-bin.index ,同样是记录日志的存 放位置的绝对路径,只不过他所记录的不是 Binary Log,而是 Relay Log。
  3. relay-log.info 文件:类似于master.info,他存放通过Slave的I/O线程写入到本地的relay log的相关信息,供 Slave 端的 SQL 线程以及某些管理操作随时能够获取当前复制的相关信息
     
四、 系统配置文件文件
     system config file(my.cnf):包含多重参数选项组(group),每一种参数组都通过中括号给定了固定的组名,常见的有
    1. [mysqld]:包括了mysqld 服务启动时候的初始化参数
    2. [client]:包含客户端工具程序可以读取的参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值