所有数据库和状态文件都包含在其中。但是,在确定数据目录内容的布局中管理员有某些职责。本文讨论为什么要移动数据目录的各个部分(甚至是字典本身)、可以移动什么,以及怎样进行这些移动。 ◆MySQL 允许您重定位其中的数据目录或元素。这样做有几个原因:
所有数据库和状态文件都包含在其中。但是,在确定数据目录内容的布局中管理员有某些职责。本文讨论为什么要移动数据目录的各个部分(甚至是字典本身)、可以移动什么,以及怎样进行这些移动。
◆MySQL 允许您重定位其中的数据目录或元素。这样做有几个原因:
◆可以用比缺省定位的文件系统更大的容量在文件系统中放置数据目录。
◆如果数据目录在繁忙的磁盘上,可以将其放置到较少使用的驱动器上,以平衡物理设备之间的磁盘活动。为了类似的原因,可以将数据库和日志文件放在不同的驱动器上,或在驱动器之间对数据库进行再分布。
◆您可以运行多个服务器,并且每个服务器都有属于自己的数据目录。这是一种解决总进程文件描述符限制问题的方法,尤其是当不能重新配置系统的核心以得到更高的限制值时。
◆某些系统将 PID 文件保存在诸如 /var/run 的目录中。为了系统运作的一致性,您可以将 MySQL PID 文件也放在那里。
重定位方法
有两种对数据目录重定位的方法:
◆可以在命令行或在一个选项文件的 [mysqld] 组上,在服务器启动时间指定一个选项。
◆可以移动要重定位的内容,然后在原始的位置中做一个指向新位置的 symlink (symbolic link,符号链接)。
两种方法的任何一种都不能为您进行全部的重定位工作。表5-3 综合了可重定位的内容以及可用于重定位的方法。
如果您使用一个选项文件,可以指定在全局选项文件 /etc/my.cnf(Windows 中的 c:\my.cnf)中的选项。当前的 Windows 版本还访问系统目录(c:\windows 或 c:\WINNT)。
您还可以使用缺省数据目录的选项文件 my.cnf(该目录编译在服务器中)。笔者不建议使用此文件。如果要重定位数据目录本身,必须保持缺省数据目录的完整性,以便在数据目录中放置一个选项文件,该文件将说明服务器应该在哪里找到“真正”的数据目录!真乱。如果想要用一个选项文件来指定服务器的选项,则最好使用 /etc/my.cnf。
重定位数据目录
现在说明重定位数据库目录的方法与步骤。
1、关闭服务器,例如:
$ mysqladmin –u root -p shutdown
2、将数据库目录移动到新的位置
3、然后删除原来的数据库
4、如果用symlink方法(Unix平台上),例如:
$ ln –s NEWDIR DATADIR
DATADIR是标准的数据库目录的位置,也是原来的数据库目录路径
。
如果用起动选项的方法,可以这样启动:
$safe_mysqld --basedir=/path/to/dir/ & (Unix)
$mysqld --basedir=x:\datadir\ (Windows)
如果用选项文件的方法:
在/etc/my.cnf(Unix)或者c:\my.cnf(Windows)中加入:
[mysqld]
datadir=/path/to/dir/
5、重新启动数据库