日志文件

错误日志:Error Log

  错误日志记录了MySQL运行过程中所有较为严重的警告和错误信息,以及MySQL Server每次启动和关闭的详细信息。在默认情况下,系统记录错误日志的功能是关闭的,如果要开启系统记录错误日志的功能,需要在启动时开启-log-error[=file_name],修改其存放目录和文件名。

  为了方便维护,有时候会希望将错误日志中的内容做备份并重新开始记录,知识后就可以利用MySQL的flush log命令来告诉MySQL备份旧日志文件并生成新的日志文件。备份文件名以“.old”结尾。

二进制文件Binary Log & Binary Log Index

  二进制日志,也就是我们常说的binlog,也是MySQL中最为重要的日志之一。我们在做主从复制的时候需要用到这个文件。当我们通过“—log-bin=[=file_name]”打开了记录的功能之后,MySQL会将所有修改数据库数据的query以二进制形式记录到日志文件中。当然,日志并不仅限于sql语句这么简单,还包括每一条sql所执行的时间,所消耗的资源,以及相关的事务信息,所以binlog是事务安全的。

  和错误日志一样,binlog记录功能需要“—log-bin[=file_name]”参数显示指定才能开启,如果未指定file_name,则会在数据目录下记录为mysql-bin.******(*代表0-9之间的某一个数字,来标识该日志的序号)

Binlog还有其他一些附加选项参数

    “--max_binlog_size”设置binlog的最大存储上线,当日志达到上限时,MySQL会重新创建一个日志开始继续记录。不过偶尔也会有超出该设置的binlog产生,一般都是因为在即将到达上限时,产生了一个较大的事务,为了保证事务安全,MySQL不会将同一个事务分开记录到两个binlog中。

   “--binlog-do-db=db_name”参数明确告诉MySQL,需要对某个(db_name)数据库记录binlog,如果有了“—binlog-do-db=db_name”参数的显示制定,MySQL会忽略针对其他数据库执行的sql语句,而仅仅记录对制定数据库执行的sql。

   “--binlog-ignore-db=db_name”与 “--binlog-do-db=db_name”完全相反,它显示指定忽略某个(db_name)数据库的binlog记录,当制定了这个参数之后,MySQL会记录制定数据库以外所有的数据库的binlog。

--binlog-ignore-db=db_name”与“--binlog-do-db_db_name”连个参数有一个共同的概念需要大家理解清楚,参数中的db_name不是指sql语句更新的数据所在的数据库,而是指执行sql的时候当前所处的数据库。不论更新哪个数据库的数据,MySQL仅仅比较当前连接所处的数据库(通过use_db_name切换后所在的数据库)与参数设置的数据库名,而不会分析sql语句所更新数据库所在的数据库。

mysql-bin.index文件(binary log index)的功能是记录所有Binary Log的绝对路径,保证MySQL各种线程能够顺利的根据它找到所有需要的Binary Log文件。

查询日志:query log

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

慢查询日志:slow query log

  慢查询日志中记录的是执行时间较长的query,也就是我们常说的slow query,通过设--log-slow-queries[=file_name]来打开该功能并设置记录位置和文件名,默认文件名为hostname-slow.log,默认目录也是数据目录。

  慢查询日志采用的是简单的文本格式,可以通过各种文本编辑器查看其中内容。其中记录了语句执行的时间,执行所消耗的时间,执行用户,连接主机等相关信息。MySQL还提供了专门用来分析慢查询日志的工具程序mysqlslowdump,用来帮助数据库管理人员解决可能存在的性能问题。

Innodb的在线redo日志:innodb redo log

  Innodb是一个事务安全的存储引擎,其事务安全性主要就是通过在线redo日志和记录表空间中undo信息来保证的。redo日志中记录了Innodb所做的所有物理变更和事务信息,通过redo日志和undo信息,Innodb保证了在任何情况下的事务安全性。Innodb的redo日志同样默认存放在数据目录下,可以通过innodb_log_home_dir来更改设置日志的存放位置,通过innodb_log_files_in_group设置日志的数量。

数据文件

  在MySQL中每一个数据库都会定义好(或者默认)的数据目录下存在一个以数据库名字命名的文件夹,用来存放该数据库中各种表数据文件。不同的MySQL存储引擎有各自不同的数据文件,存放位置也有区别。多数存储引擎的数据文件都存放在和MyISAM数据文件位置相同的目录下,但是每个数据文件的扩展名却各不一样。如MyISAM用“.MYD”作为扩展名,Innodb用“.ibd”等等。

“.frm”文件

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

“.MYD”文件

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

“.MYI”文件

  “.MYI”文件也是专属于MyISAM存储引擎的,主要存放MyISAM表的索引相关信息。对于MyISAM存储来说,可以被cache的内容主要就是来源于“.MYI”文件中。每一个MyISAM表对应一个“.MYI”文件,存放于位置和“.frm”以及“.MYD”一样。

“.ibd”文件和ibdata文件

  这两种文件都是存放Innodb数据的文件,之所以有两种文件来存放Innodb的数据(包括索引),是因为Innodb的数据存储方式能够通过配置来决定是使用共享表空间存放存储数据,还是独享表空间存放存储数据。独享表空间存储方式使用“.ibd”文件来存放数据,且每个表一个“.ibd”文件,文件存放在和MyISAM数据相同的位置。如果选用共享表空间来存放数据,则会使用“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配置的最后,而且必须重启MySQL才能完成ibdata的添加工作。不过如果我们使用独享表空间存储方式的话,就不会有这样的问题。

Replication相关文件

master.info文件

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

relay log和relay log index

  mysql-relay-bin.******文件用于存放Slave端的I/O线程从Master端读取到的Binary Log信息,然后由Slave端的SQL线程从该relay log中读取并解析相应的日志信息,转化为Master端执行的SQL语句,然后在Slave端应用。

  mysql-relay-bin.index文件的功能类似于mysql-bin.index,同样是记录日志的存放位置的绝对路径,只不过他记录的不是Binary Log,而是Relay Log。

relay-log.info

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

其他文件

system config file

  MySQL的系统配置文件一般都是“my.cnf”,“my.cnf”文件中包含多种参数选项组,每一种参数组都通过中括号给定了固定的组名,如“[mysqld]”组中包括了mysqld服务启动时候的初始化参数,“[client]”组中包含着客户端工具程序可以读取的参数,此外还有其他针对各个客户端软件的特定参数组,如mysql程序使用“[mysql]”等等,如果读者编写了某个客户端程序,也可以自己设定给一个参数组名,将相关参数配置在里面,然后mysql客户端api程序中的参数读取api读取相关参数。

pid file

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

Socket file

  Socket文件也是在Unix/Linux环境下才有的,用户在Unix/Linux环境下客户端连接可以不通过TCP/IP网络而直接使用Unix Socket来连接MySQL。

本文参考资料:《MySQL性能调优与架构设计》

MySQL物理文件组成的更多相关文章

  1. MySQL 物理文件体系结构的简单整理说明

    本文出处:http://www.cnblogs.com/wy123/p/7102128.html (保留出处并非什么原创作品权利,本人拙作还远远达不到,仅仅是为了链接到原文,因为后续对可能存在的一些错 ...

  2. MySql 物理文件组成

    1.日志文件        MySQL 各类日志文件介绍 2.数据文件        MySQL 各类数据文件介绍

  3. 误删mysql表物理文件的解决方法(不涉及恢复数据)

    该方法只介绍了如何救回这个表名(数据不恢复) 如果想要恢复原来数据 直接用extundelete把文件恢复后放回去即可 并且是适用于平时没有全备的情况下  如果有全备 直接那全备的frm和idb文件放 ...

  4. MySQL innodb表使用表空间物理文件复制或迁移表

    MySQL InnoDB引擎的表通过拷贝物理文件来进行单表或指定表的复制,可以想到多种方式,今天测试其中2种: 将innodb引擎的表修改为Myisam引擎,然后拷贝物理文件 直接拷贝innodb的表 ...

  5. 一次修改数据库物理文件造成Mysql宕机的恢复记录

    事件起始 某夜,我正在床上冥想准备入睡,忽然同事向我求救:消息内容如下: Oh My Gold 改了些配置,啥都没了!都没了!没了!了! 我仔细询问,原来是她因为某些原因将某库的物理文件夹改名后,发现 ...

  6. MySQL体系结构之物理文件

    一.MySQL日志文件 mysql日志文件及功能: 日志文件 功能 错误日志 记录启动.停止.运行过程中mysqld时出现的问题 通用日志 记录建立客户端连接和执行的语句 二进制日志 记录更改数据的所 ...

  7. mysql引擎与物理文件

    SELECT VERSION();show GLOBAL VARIABLES like '%PARTITION%';-- 查看分区情况 show GLOBAL VARIABLES like '%dat ...

  8. (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb)

    (3.12)mysql基础深入——mysql日志文件/其他文件(socket/pid/表结构/Innodb) 关键词:mysql日志文件,mysqldumpslow分析工具 目录:日志文件的分类 1. ...

  9. mysql数据库文件简介和应用

    存放目录: 用 whereis my.cnf 查看mysql配置文件的目录,查看my.cnf的datadir参数可找到mysql数据库文件的存放目录. 本机存放的目录为/var/lib/mysql,进 ...

随机推荐

  1. Android 之计算控件颜色透明度

    Android 之计算控件颜色透明度 1.UI会给一个数值,例如:#EFE000,透明度30% 2.用255乘以30%等于76.5,然后四舍五入等于77 3.用计算器将十进制的77转成十六进制的数据为 ...

  2. Linux下使用autoconf 和 automake 编译简单的HelloWorld

    使用过开源C/C++项目的同学都知道,标准的编译过程已经变成简单的三部曲:./configure /make/make install,使用起来很方便,不像平时自己写代码,要手写一堆复杂的makefi ...

  3. c.BIO连接器与NIO连接器的对比

    前面两节,我们分别看了BIO和NIO的两种模式Tomcat的实现方式. BIO的方式,就是传统的一线程,一请求的模式,也就是说,当同时又1000个请求过来,如果Tomcat设置了最大Accept线程数 ...

  4. 如何让popWindow显示在view上方

    看了bilibili的客户端搜索按钮,很喜欢大爱!自己也想做个类似的(相似度 10% 哈哈) popWin的出现退出动画也可以自己设定,用过其方法setAnimationStyle(R.style.x ...

  5. C#日常知识

    常量: 定义常量:const; 条件运算符: 表达式1?表达式2:表达式3[如果正确则执行表达式2,不正确执行表达式3] (例如:int result; result = 5>4?100:200 ...

  6. 有关于psExec的使用

    psExec是微软pstools工具包中最常用的一个工具,也是在内网渗透中的免杀渗透利器. psExec能够在命令行下在对方没有开启telnet服务的时候返回一个半交互的命令行,像telnet客户端一 ...

  7. (36)老版和新版API调用

    ---------更新时间18:06 2016-09-18 星期日------- *前言   我用的是odoo8,但里面有相当多的api是以前版本,这时若我们自己开发的   插件采用新版本api,里面 ...

  8. JavaScipt的秘密花园

    对象使用和属性 JavaScript 中所有变量都可以当作对象使用,除了两个例外 null 和undefined. false.toString(); // 'false'[1, 2, 3].toSt ...

  9. ios批量打包

    最近我们接到了新的需求,需要打出类似xx001-xx100共100个这样的ipa渠道包,不需要签名.(这批ipa包后续会用企业证书签名,不会影响AppStore的) 这些包所有的功能.内容都是一样的, ...

  10. 解决Ubuntu 下 vi编辑器不能使用方向键和退格键问题

    转自:http://blog.csdn.net/sky101010ws/article/details/51012103 使用vi命令时,不能正常编辑文件,使用方向键时老是出现很多字母 这个问题主要是 ...