有两种对数据目录重定位的方法: 可以在命令行或在一个选项文件的[mysqld] 组上,在服务器启动时间指定一个选项。 可以移动要重定位的内容,然后在原始的位置中做一个指向新位置的s y m l i n k (symbolic link,符号链接)。 两种方法的任何一种都不能为您进行全部的重定位工作。表10-4 综合了可重定位的内容以及可用于重定位的方法。如果您使用一个选项文件,可以指定在全局选项文件/ e t c / my.cnf(windows中的c:/my.cnf)中的选项。当前的windows 版本还访问系统目录(c:/windows 或c:/n t)。 您还可以使用缺省数据目录的选项文件my.cnf(该目录编译在服务器中)。笔者不建议使用此文件。如果要重定位数据目录本身,必须保持缺省数据目录的完整性,以便在数据目录中放置一个选项文件,该文件将说明服务器应该在哪里找到“真正”的数据目录!真乱。如果想要用一个选项文件来指定服务器的选项,则最好使用/ e t c / my.cnf。
估计重定位的效果
在试图对任何东西进行重定位之前,检验该操作是否将具有所期望的效果是一个好主意。笔者倾向于用d u、df 和ls -l 命令来获得磁盘空间信息,但是所有的命令都依赖于对文件系统布局的正确理解。 以下例子将显示出一个神秘的中断以密切注意何时估计数据目录的重定位。假定数据目录是/ us r / l o c a l / v a r,并且想将其移动到/ v a r / mysql,因为df 指出该/var 文件系统有较多的可用空间(如下例所示):
这大约为13 0 mb,应该对/usr 产生相当大的变化。但这是真的吗?可在该数据目录/ us r 中试一下df 命令:
真奇怪。我们请求的是包含/usr/local/var 系统文件的可用空间,可为什么df 报告了v a r 的空间呢?下面的ls -l 做出了回答:
该输出结果表明/usr/local/var 是对/var/mysql的一个s y m l i n k。换句话说,数据目录已经被重定位到/var 文件系统中,并且用指向/var 文件系统的symlink 所取代。有关通过移动数据目录到/var 中来释放大量的/usr 空间的工作就到此为止了! 教训:花几分钟的时间估计重定位的效果是一个有价值的投资。不用花很长的时间就会发现您可能不能达到自己的预期目标,这样可以使您避免浪费大量的移动数据目录的时间。
重定位的预防措施 在执行任何重定位操作之前应该关闭服务器,然后再重新启动它。对有些类型的重定位(如移动数据库目录),保持服务器的运行状态是可能的(尽管不建议这样做)。如果要这样做,您必须确保服务器没有访问将要移动的数据库。还应该确保在移动数据库之前发布了flush table 语句,以便确保服务器关闭所有打开的表文件。不履行这些预防措施可能导致表的毁坏。 应该以数据目录所有者的身份来执行这些命令。为了安全起见,将原来的数据库目录重新命名为b i g db . o r i g。在验证了服务器与重定位服务器正常工作之后,可以删除原来的目录: % rm -rf bigdb.orig
可以用启动选项重定位pid 文件、常规日志和更新日志。错误日志由safe_mysqld 创建且不能够重定位(除非编辑s a f e _ mysqld) 为了在另一个位置写状态文件,应关闭服务器,然后用指定新状态文件位置的恰当选项重新启动它。表10 - 6列出了每个文件的命令行和选项的语法。 删除一个重定位的数据库 您可以用drop database 语句删除一个数据库,但是旧版本的mysql在删除已经重定位的数据库时是有难度的。该数据库中的表被正确地删除了,但在服务器试图删除该数据库目录时会出现错误,这是由于该目录是一个symlink 而不是真正的目录。mysql管理员必须手工删除该数据库目录和指向它的s y m l i n k。自mysql3.23 以来,这个问题已经得到解决。
如果以绝对路径名指定一个状态文件的名称,则用该路径名创建该文件。否则,该文件在该数据目录下创建。例如,如果您指定- - pid - file = /var/run/mysqld.pid,则该pid 文件为/ v a r / r un / mysqld . p i d。如果您指定-- pid - file = mysqld.pid ,则该pid 文件为data d i r/ mysqld . p i d。 如果指定一个没有带扩展名的更新日志,则mysql在打开该更新日志时将生成顺序的名字。这些名字用. n n n 扩展名创建,这里的.n n n是未被已有的更新日志文件使用过的第一个号码(如, up date . 0 0 1、up date . 0 0 2等等)。可以通过指定包含明确的扩展名来忽略顺序名字的生成,然后服务器将仅使用您指定的这个名字。,欢迎访问网页设计爱好者web开发。