MySQL学习笔记(二)架构组成

转载 2012年03月22日 17:23:22

MySQL学习笔记(二)架构组成

1.物理文件

1.1 日志文件

错误日志:需要在启动时开启-log-error 选项。错误日志的默认存放位置在数据目录下,以hostname.err 命名。但是可以使用命令:--log-error[=file_name],修改其存放目录和文件名。

二进制日志:当我们通过“--log-bin[=file_name]”打开了记录的功能之后,MySQL 会将所有修改数据库数据的query 以二进制形式记录到日志文件中。当然,日志中并不仅限于query 语句这么简单,还包括每一条query 所执行的时间,所消耗的资源,以及相关的事务信息,所以binlog是事务安全的。
和错误日志一样,binlog 记录功能同样需要“--log-bin[=file_name]”参数的显式指定才能开启,如果未指定file_name,则会在数据目录下记录为mysql-bin.******(*代表0~9 之间的某一个数字,来表示该日志的序号)。

查询日志:“--log[=fina_name]”来打开该功能。由于记录了所有的query,包括所有的select,体积比较大,开启后对性能也有较大的影响,所以请大家慎用该功能。

错误日志: -log-err
查询日志: -log
慢查询日志: -log-slow-queries
更新日志: -log-update
二进制日志: -log-bin

mysql的安装目录下,打开my.ini,在后面加上上面的参数,保存后重启mysql服务就行了。
例如:
#Enter a name for the binary log. Otherwise a default name will be used.
#log-bin=


C:\Documents and Settings\All Users\Application Data\MySQL\MySQL Server 5.5\data\hostname.log文件下面生成了:

120322 16:59:56        1 Query    select * from t_user
120322 17:00:31        1 Query    select * from t_user

1.2数据文件

1、“.frm”文件
与表相关的元数据(meta)信息都存放在“.frm”文件中,包括表结构的定义信息等。不论是什么存储引擎,每一个表都会有一个以表名命名的“.frm”文件。所有的“.frm”文件都存放在所属数据库的文件夹下面。
2、“.MYD”文件
“.MYD”文件是MyISAM 存储引擎专用,存放MyISAM 表的数据。每一个MyISAM 表都会有一个“.MYD”文件与之对应,同样存放于所属数据库的文件夹下,和“.frm”文件在一起。
3、“.MYI”文件
“.MYI”文件也是专属于MyISAM 存储引擎的,主要存放MyISAM 表的索引相关信息。对于MyISAM 存储来说,可以被cache 的内容主要就是来源于“.MYI”文件中。每一个MyISAM表对应一个“.MYI”文件,存放于位置和“.frm”以及“.MYD”一样。
4、“.ibd”文件和ibdata 文件
这两种文件都是存放Innodb 数据的文件,之所以有两种文件来存放Innodb 的数据

1.3 Replication相关文件:
1、master.info 文件:
master.info 文件存在于Slave 端的数据目录下,里面存放了该Slave 的Master 端的相关信息,包括Master 的主机地址,连接用户,连接密码,连接端口,当前日志位置,已经读取到的日志位置等信息。
2、relay log 和relay log index
mysql-relay-bin.xxxxxn 文件用于存放Slave 端的I/O 线程从Master 端所读取到的Binary Log 信息,然后由Slave 端的SQL 线程从该relay log 中读取并解析相应的日志信息,转化成Master 所执行的SQL 语句,然后在Slave 端应用。mysql-relay-bin.index 文件的功能类似于mysql-bin.index ,同样是记录日志的存放位置的绝对路径,只不过他所记录的不是Binary Log,而是Relay Log。
3、relay-log.info 文件:类似于master.info,它存放通过Slave 的I/O 线程写入到本地的relay log 的相关信息。供Slave 端的SQL 线程以及某些管理操作随时能够获取当前复制的相关信息。

1.4 其他文件:
1、system config file
MySQL 的系统配置文件一般都是“my.cnf”,Unix/Linux 下默认存放在"/etc"目录下,Windows 环境一般存放在“c:/windows”目录下面。“my.cnf”文件中包含多种参数选项组
(group),每一种参数组都通过中括号给定了固定的组名,如“[mysqld]”组中包括了mysqld服务启动时候的初始化参数,“[client]”组中包含着客户端工具程序可以读取的参数,此外还有其他针对于各个客户端软件的特定参数组,如mysql 程序使用的“[mysql]”,mysqlchk使用的“[mysqlchk]”,等等。如果读者朋友自己编写了某个客户端程序,也可以自己设定一个参数组名,将相关参数配置在里面,然后调用mysql 客户端api 程序中的参数读取api
读取相关参数。
2、pid file
pid file 是mysqld 应用程序在Unix/Linux 环境下的一个进程文件,和许多其他Unix/Linux 服务端程序一样,存放着自己的进程id。
3、socket file
socket 文件也是在Unix/Linux 环境下才有的,用户在Unix/Linux 环境下客户端连接可以不通过TCP/IP 网络而直接使用Unix Socket 来连接MySQL。

2.MySQl Server 系统架构

2.1逻辑模块组成

总的来说,MySQL 可以看成是二层架构,第一层我们通常叫做SQL Layer,在MySQL 数据库系统处理底层数据之前的所有工作都是在这一层完成的,包括权限判断,sql 解析,执行计划优化,query cache 的处理等等;第二层就是存储引擎层,我们通常叫做StorageEngine Layer,也就是底层数据存取操作实现部分,由多种存储引擎共同组成。所以,可以用如下一张最简单的架构示意图来表示MySQL 的基本架构,


mysql的每一层包含很多模块,我们来看看sql layer各模块是怎么交互的:



高性能MySQL学习笔记(1) —— MySQL架构

MySQL逻辑架构 MySQL逻辑架构图如下: 这里分为三层: 1.连接层:连接与线程处理,这一层并不是MySQL独有,一般的基于C/S架构的都有类似组件,比如连接处理、授权认证、安全等。 ...

【学习笔记】高性能MySQL(第三版)——第1章:MySQL架构与历史

MySQL并不完美,却足够灵活,能够适应高要求的环境,例如Web类应用。同时,MySQL既可以嵌入到应用程序中,也可以支持数据仓库、内容索引和部署软件、高可用的冗余系统、在线事务处理系统(OLTP)等...

系统架构师学习笔记

  • 2015年08月17日 19:31
  • 61KB
  • 下载

BI学习笔记之二- BI的体系架构与相关技术

BI的体系架构与相关技术 一个BI系统为了满足企业管理者的要求,从浩如烟海的资料中找出其关心的数据,必须要做到以下几步: 1)为了整合各种格式的数据,清除原有数据中的错误记录—...
  • bon_mot
  • bon_mot
  • 2013年03月26日 10:36
  • 2119

PCIe的原理及体系架构_学习笔记

  • 2015年04月24日 13:57
  • 178KB
  • 下载

Android学习笔记<二> Android架构

学习一个新的知识,我总想对其有一个直观的印象。在这基础上,会产生一种偷窥的欲望,想通过窥视它的冰山一角,了解它内部秘密。 撕开它神秘的面纱的时候到了,让我们拭目以待(哈哈): 1.Android系统...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MySQL学习笔记(二)架构组成
举报原因:
原因补充:

(最多只允许输入30个字)