当前位置: 首页 > 图文教程 > 数据库 > DB2 > MySQL数据目录结构(2)

DB2
在Linux虚拟机上安装 DB2 9
DB2 9励精图强 Viper 2续写传奇
DB2返回SQLCODE -818 错误
DB2未来版“Viper 2” :为IT敏捷加速
解析:DB2 无限活动日志策略的实用技巧
SQL Server和MySQL的安全性分析
DB2数据库归档日志的管理方案
实例解析IBM DB2的数据复制、迁移方法
备份恢复DB2数据库步骤
DB2 9部署定制的安全性插件
DB2 Web 服务提供者的安全性
DB2无限活动日志策略从介绍到实用技巧
实现对 DB2 UDB 的低层访问控制
DB2数据库安全涉及的问题
关于DB2 数据库授权的研究
DB2 数据库身份验证基础
监控 DB2 活动之捕获事件监控数据
使用重定向恢复克隆 DB2 数据库
监控 DB2 活动之捕获快照数据
DB2 数据库特权授予的方法和技巧

DB2 中的 MySQL数据目录结构(2)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-31   浏览: 42 ::
收藏到网摘: n/a

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 重定位数据库

数据库能通过符号连接的方法移走。要重定位一个数据库,关闭服务器并移走数据库目录并删除原来的数据库目录,用指向新位置的符号连接代替它,然后重启