|
网站首页
|
JAVA文章
|
AppServers
|
Web开发
|
应用开发
|
资源下载
|
想学好编程,外语很重要,最新的编程技术还是在国外 [enadd 2006年12月25日]
设为首页
加入收藏
联系站长
您现在的位置:
编程笔记网
>>
数据库
>>
mysql
>>
使用实例
>> 文章正文
MySQL数据目录结构(2)
【字体:
小
大
】
MySQL数据目录结构(2)
作者:不详 文章来源:网络 点击数: 更新时间:2007-1-21
3重定位
数据库
目录
前面讨论的数据目录结构是缺省配置,所有
数据库
和状态文件均包含其中,然而,你有某些自由决定数据目录内容的位置,本节讨论为什么你可能移走部分数据目录(或甚至目录本身)、你能移走什么以及你如何做这些改变。
MySql允许你重定位数据目录或其中的成员,由几个原因你为什么要这样做:
你能将数据目录放在你缺省所在的文件系统更大容量的文件系统上。
如果你的数据目录在一个繁忙的硬盘上,你可能把它放在不太忙的磁盘上以均衡磁盘活动。你可以把
数据库
和日志文件放在分开的磁盘上或跨磁盘分布。
你可能想运行多个服务器,各自有自己的数据目录,这是解决每个进程文件描述符限制问题的一种方法,特别是你不能重新配置内核以允许更高的限制。
有些系统在例如/var/run中保存服务器的部分文件,你可能想把MySql的PID文件也放在那儿,为了系统操作的一致性。
3.1重定位方法
有两种方法重定位数据目录的内容:
你可以在服务器启动时指定选项,在命令行或在一个选项文件的[MySqld]中。
你可以移走要重定位的东西,然后在原位置做一个指向新位置的符号连接。
两种方法都不能解决你能重定位的一切,下表总结了什么能重定位和用哪种方法重定位。如果你使用选项文件,有可能在全局选项文件/etc/my.cnf(Windows上的c:\my.cnf)指定选项。当前的Windows版本也寻找系统目录(c:\Windows或c:\NT)。表重定位方法
重定位方法适用的重定位方法
整个数据目录启动选项或符号连接
单个
数据库
目录符号连接
单个
数据库
表符号连接
PID文件启动选项
一般日志启动选项
更新日志启动选项
你也可以使用缺省数据目录中的选项文件my.cnf,但不推荐使用该文件。如果你想重定位数据目录本身,你不得不让缺省数据目录可读以便使你能在这里放置选项文件指定服务器应该在哪里找到“真正”的数据目录!这很混乱。如果你想使用一个选项文件指定服务器选项,最好使用/etc/my.cnf。
3.1检验重定位的效果
在试图重定位任何东西之前,检验操作达到预期效果是个好主意。借助于du、df和ls-l命令获得磁盘空间的信息,但这些依赖于你正确了解你的文件系统的布局。
下面演示一个在你检验一个属目录重定位时的设计陷阱。假定你的数据目录是/usr/local/var,而你想把它移到/var/MySql,因为df显示/var文件系统有很多的空闲空间:
%df/usr/varFilesystem1k-blocksUsedAvailCapacityMountedon/dev/wd0s3e3968952921267301880%/usr/dev/wd0s3f1189359111192416228715%/var
重定位的数据目录在/usr文件系统上有多少空闲空间呢?要知道它,使用du-s找出该目录使用多少空间。
%cd/usr/local/var%du-s.133426
这大约是130MB,真实这样吗?在数据目录下试一下df:
%df/usr/local/varFilesystem1k-blocksUsedAvailCapacityMountedon/dev/wd0s3f1189359111192416228715%/var
这就奇怪了。如果我们为包含/usr/local/var的文件系统申请空闲空间,为什么却报告var上的空间呢?这里ls-l提供了答案:
%ls-l/usr/local....lrwxrwxrwx1rootwheel10Dec1123:33var->/var/MySql....
输出显示/usr/local/var是对/var/
sql
/Index.html'>my
sql
的符号连接,换句话说,数据目录已经被重定位于/var文件系统,并用一个指向那里的符号连接代替。通过将数据目录移到/var竟然释放了/usr上那么多空间!
3.2重定位数据目录
要重定位数据目录,关闭服务器并把数据目录移到新位置上,然后你应该删除员数据目录并用指向新位置的符号连接代替它,或用明确指出新位置的选项重启服务器。下表列出指定位置的命令行和选项。表数据目录重定位语法
选项源语法
命令行--data-dir=/path/to/dir
选项文件[
sql
/Index.html'>my
sql
d]
datadir=/path/to/dir
3.3重定位
数据库
数据库
能通过符号连接的方法移走。要重定位一个
数据库
,关闭服务器并移走
数据库
目录并删除原来的
数据库
目录,用指向新位置的符号连接代替它,然后重启服务器。
下例显示你如何将一个
数据库
bigdb移到一个不同的地方:
%
sql
/Index.html'>my
sql
admin-uroot-pshutdownEnterpassword:******%cdDATADIR%tarcf-bigdb|(cd/var/db;tarxf-)%m
vb
igdbbigdb.origln-s/var/db/bigdb.%safe_
sql
/Index.html'>my
sql
d
你应该以该数据目录的拥有者执行这些命令。为了安全起见,原
数据库
目录改名为bigdb.orig。在你验证了服务器工作正常后,你可以删除原数据目录。
%rm-rfbigdb.orig
3.4重定位
数据库
表
重定位一个单独的表不是个好主意。你可以通过把表文件移到一个不同地方,并在数据目录中创建指向这些文件的符号连接进行。然而,如果你发出一条ALTERTABLE或OPTIMIZETABLE语句,将不进行你的修改。
每个语句通过在
数据库
目录中创建一个实现你修改或优化的临时表,然后删除原来的表并将临时表更名为原来的表来完成,结果是你的符号连接被删除,而且新表又回到
数据库
目录,这是你移走前的原表文件位置。更糟糕的是,你还没有意识到它们在那儿,继续占据着空间,而且符号连接已经被破坏,这样以后当你意识到发生的事情时,如果你忘记你把它们移到什么地方,你可能没有好办法追踪文件了
[1]
[2]
下一页
文章录入:enadd 责任编辑:enadd
上一篇文章:
MySQL数据目录结构(1)
下一篇文章:
Mysql开发中的外键与参照完整性
【
发表评论
】【
加入收藏
】【
告诉好友
】【
打印此文
】【
关闭窗口
】
最新热点
最新推荐
相关文章
MySQL数据的导出和导入工具:…
mysql授课大纲
mysql技巧总结
PPTP + MPPE + RADIUS + MyS…
使用函数递归实现基于php和M…
基于MySQL的高性能数据库应用…
Mysql日期和时间函数
深圳讯天 mysql 服务器错误分…
几分钟让你走进mysql的门
针对 Apache 2.x 的 MySQL 用…
网友评论:
(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
|
设为首页
|
加入收藏
|
联系站长
|
友情链接
|
版权申明
|
管理登录
|
Copyright ©2000 - 2005
Enadd
.com
备案序号:辽ICP备06005595号
站长:
enadd