您现在的位置: 网页制作教程网 >> 数据库教程 >> mysql 教程 >> 文章正文

MySQL数据目录结构

作者:网易

来源:网易

热度:

2006-9-6 14:30:40

如果MySQL是从一个源代码分发安装的,你可以检查其配置信息确定数据目录位置。例如,位置可从顶级Makefile中获得,但是注意,位置是Makefile中的localstatedir值,不是datadir,而且,如果分发位于一个NFS挂载的文件系统并用来为多个主机构建MySQL,配置信息反映了分发被最新构建的主机,这可能不能提供你感兴趣的主机的数据目录信息。  
如果上述方式失败,你可以用find寻找数据库文件,下列命令寻找“.frm”文件,它是任何MySQL安装的一部分:  

% find / -name ".frm" -print  

在下文各例中,用DATADIR表示MySQL数据目录位置。  
2、数据目录结构  
MySQL数据目录包含了服务器管理的所有数据目录,这些文件被组织成一个树状结构,通过利用Unix或Windows文件系统的层次结构直接实现。  

每个数据库对应于数据目录下的一个目录。  
在一个数据库中的表对应于数据目录下的文件。  
数据目录也包含由服务器产生的几个状态文件,如日志文件。这些文件提供了关于服务器操作的重要信息。对管理特别在出了问题而试图确定问题原因时很有价值。例如,如果某个特定查询杀死服务器,你可以通过检查日志文件判别捣乱的查询。  

2.1 MySQL服务器怎样提供对数据的访问  
在数据目录下的一切由一个单独的实体-MySQL服务器mysqld管理,客户程序绝不直接操作数据。相反,服务器提供数据可访问的切入点,它是客户程序与它们想使用的数据之间的中介。

当服务器启动时,如果有需要,它打开日志文件,然后通过监听网络连接位数据目录呈现一个网络接口。要访问数据,客户程序建立对服务器的一个连接,然后以MySQL查询传输请求来执行希望的操作。服务器执行每一个操作并将结果发回用户。服务器是多线程的并能服务多个同时的客户连接。然而,因为修改操作一个执行一个,实际效果是顺序化请求,以使两个客户决不能在同一时刻改变同一记录。

在正常的情况下,让服务器作为数据库访问的唯一仲裁者提供了避免可从同时访问数据库表的多个进程的破坏的保证。管理员应该知道有时服务器没有对数据目录的独裁控制。  

当你在一个单个数据目录上运行多个服务器。一般倪云新一个服务器管理主机上的所有数据库,但是有可能运行多个服务器。如果这完成提供对多个独立数据目录的访问,没有相互影响的问题,但哟也能启动多个服务器并指向同一个目录。一般地,这不是一个好主意。如果你试图这样,最好是你的系统提供良好的文件锁定功能,否则服务器将不能正确协作。如果你将多个服务器同时写入日志文件,你也冒着你的日志文件称为混乱的根源的风险。  
在你运行isamchk和myisamchk时。isamchk和myisamchk实用程序用于表的维护、诊错和修复,就想你想的那样,因为这些程序可以修改表内容,允许它们与服务器正在操作的同时对表操作,这样能导致表损坏。理解如何限制这种相互影响是很重要的,这样你不会损坏你的表。  
2.2 数据目表示  
每个MySQL服务器管理的数据库有自己的数据库表,它是数据目录下的一个子目录,其名字与它表示的数据库相同。例如数据库my_db对应于数据库目录DATADIR/my_db。  

这种表示允许多个数据库级的语句在其实现中十分简单。CREATE DATABASE db_name在数据目录中创建一个db_name空目录,具有只允许MySQL服务器用户(运行服务器的Unix用户)的属主和模式,这等价于下列手工在服务器主机上创建数据库:  

%mkdir DATADIR/db_name  
%chmod 700 DADADIR/db_name  
用一个空目录表示一个新数据库的最简单方法与其它数据库甚至为一个空数据库创建大量的控制文件或系统文件正好相反。  

DROP DATABASE语句实现同样简单。DROP DATABASE db_name删除数据库中的db_name目录和所有表文件,这几乎与下列命令一样:  

%rm -rf DATADIR/db_name  
(差别是服务器只删除具有已知用于表的后缀名的文件。如果你在数据库目录创建了其它文件。则服务器保留它们,而且目录本身不被删除。  

上一页  [1] [2] [3] [4] 下一页

我来说两句:

1分 2分 3分 4分 5分
姓名: *


* 请各位网友遵纪守法并注意语言文明。
网站简介 | 联系方式 | 意见建议 | 版权说明
Copyright © 2007 All rights reserved
滇ICP备06006992号