日期:2011-05-02 15:22:00 来源:本站整理
MySQL数据目录构造(2)[MSSQL防范]
本文“MySQL数据目录构造(2)[MSSQL防范]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
MySQL数据目录构造(2)
[晏子]
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 /varFilesystem 1k-blocks Used Avail Capacity Mounted on/dev/wd0s3e 396895 292126 73018 80% /usr/dev/wd0s3f 1189359 1111924 162287 15% /var
重定位的数据目录在/usr文件系统上有多少闲暇空间呢?要知道它,利用du -s找出该目录利用多少空间.
%cd /usr/local/var%du -s .133426
这大约是130MB,真实这样吗?在数据目录下试一下df:
%df /usr/local/varFilesystem 1k-blocks Used Avail Capacity Mounted on/dev/wd0s3f 1189359 1111924 162287 15% /var
这就奇特了.假如我们为包含/usr/local/var的文件系统申请闲暇空间,为什么却报告var上的空间呢?这里ls -l供应了答案:
%ls -l /usr/local....lrwxrwxrwx 1 root wheel 10 Dec 11 23:33 var -> /var/mysql....
输出显示/usr/local/var是对/var/mysql的标记衔接,换句话说,数据目录已经被重定位于/var文件系统,并用一个指向那边的标记连代替换.通过将数据目录移到/var竟然释放了/usr上那么多空间!
3.2 重定位数据目录
要重定位数据目录,关闭服务器并把数据目录移到新位置上,然后你应当删除员数据目录并用指向新位置的标记连代替换它,或用明确指出新位置的选项重启服务器.下表列出指定位置的号令行和选项.表 数据目录重定位语法
选项源 语法
号令行 --data-dir=/path/to/dir
选项文件 [mysqld]
datadir=/path/to/dir
3.3 重定位数据库
数据库能通过标记衔接的办法移走.要重定位一个数据库,关闭服务器并移走数据库目录并删除本来的数据库目录,用指向新位置的标记连代替换它,然后重启服务器.
下例显示你若何将一个数据库bigdb移到一个差别的地方:
%mysqladmin -u root -p shutdownEnter password: ******%cd DATADIR%tar cf - bigdb | (cd /var/db; tar xf -)%mv bigdb bigdb.origln -s /var/db/bigdb .%safe_mysqld
你应当以该数据目录的拥有者履行这些号令.为了安全起见,原数据库目录改名为bigdb.orig.在你考证了服务器工作正常后,你可以删除原数据目录.
%rm -rf bigdb.orig
3.4 重定位数据库表
重定位一个单独的表不是个好主张.你可以通过把表文件移到一个差别地方,并在数据目录中成立指向这些文件的标记衔接举行.但是,假如你发出一条ALTER TABLE或OPTIMIZE TABLE语句,将不举行你的改正.
每个语句通过在数据库目录中成立一个实现你改正或优化的暂时表,然后删除本来的表并将暂时表改名为本来的表来完成,后果是你的标记衔接被删除,并且新表又回到数据库目录,这是你移走前的原表文件位置.更糟糕的是,你还没有意识到它们在那儿,持续占据着空间,并且标记衔接已经被破坏,这样今后当你意识到发生的事情时,假如你忘掉你把它们移到什么地方,你大概没有好办法追踪文件了.
因为很难保证具有表拜候权的人不改正或优化表,所以最好把表留在数据库目录中.
3.5 重定位状况文件
你可以重中定位PID文件、普通日记和更新日记.出错日记由safe_mysqld用启动选项成立,而不能被重定位(除非你编辑safe_mysqld).
要在一个差别位置写入状况文件,关闭服务器,然后由指定新状况文件位置的得当选项启动它.下表列出每一个文件的号令行和选项文件的语法.表 状况文件重定位语法
选项源 语法
号令行 --pid-file=pidfile
--log=lodfile
--log-update=updatefile
选项文件 [mysqld]
pid-file=pidfile
log=lodfile
log-update=updatefile
假如你用绝对途径名指定状况文件,用该途径成立文件,不然文件在数据目录下成立.如,假如你指定--pid-file=/var/run/mysqld.pid,PID文件是/var/run/mysqld.pid.假如你指定-pid-file=mysqld.pid,PID文件是DATADIR/mysqld.pid.
假如你指定无扩大名的更新日记文件,MySQL在它每次翻开更新日记时产生次序名.这些名字用一个扩大名.nnn,这里.nnn是还没被现有更新日记利用的第一个数字(如update.000,update.001等).你可以通过明确指定扩大名来覆盖次序名,这时服务器将只利用指定的名字
以上是“MySQL数据目录构造(2)[MSSQL防范]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |
评论内容只代表网友观点,与本站立场无关!
评论摘要(共 0 条,得分 0 分,平均 0 分)
查看完整评论