Mysql入门系列:MySQL重定位数据目录的内容
2006-12-31 10:53:03 来源:WEB开发网重定位数据库表
对单个的表进行重定位不是好主意。可以通过将表的文件移动到另一个位置并在该数据库目录中创建指向这些文件的symlink 来进行。但是,如果曾经发布过ALTER TABLE 或OPTIMIZE TABLE 语句,则所做的这些修改将被取消。
每个语句通过在数据库目录中创建一个实现变更和最优化的临时表进行操作,然后删除原来的表,将该临时表重新命名为原来的名称。其结果是: symlink 被删除,新的表回到数据库目录中,该目录是您移动表之前的原始表所在位置。因此,移出该数据库目录的旧的表文件仍然在原位置上─您甚至已经不记得它们的存在,但它们仍然占用着空间。同样,symlink 已经消失,因此,当您意识到所发生的一切时,如果已经不记得是在哪里移动的,将没有任何好办法去捕捉这些文件。
要想确保访问该表的任何人都不更改或优化该表是困难的(因而撤消任何企图的重定位),因此最好保留该数据库目录中的这些表。
重定位状态文件
可以用启动选项重定位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等等)。可以通过指定包含明确的扩展名来忽略顺序名字的生成,然后服务器将仅使用您指定的这个名字。
更多精彩
赞助商链接