Heim >Datenbank >MySQL-Tutorial >调整MySQL数据目录位置_MySQL
MySQL数据库的数据目录位置,包括目录里的各种文件的位置)可根据实际情况进行调整。调整的方法有两种,一种是使用符号链接;一种用服务器启动选项。
下面一个列表说明了数据目录及目录中文件各自适宜采用的方法:
Table 3.2. MySQL数据目录及目录中文件位置的调整方法
调整对象 适用方法
整个数据目录 启动选项和符号链接
数据库目录 符号链接
数据表 符号链接
InnoDB数据表空间 启动选项
PID文件 启动选项
日志文件 启动选项
下面是各种调整方法的具体操作过程:
在调整MySQL的数据目录时,要先停止服务器,再把数据目录移动到新的位置。接着,我们可选择在原来目录下创建一个符号链接指向新的位置,或者用启动选择--datadir指向新的数据目录。推荐用创建符号链接的方法,因为如果那个数据目录中有my.cnf文件,相应的服务器还能找到它。
数据库只能存在于MySQL数据目录中,所以只能使用符号链接的方法调整它的位置。在Linux系统的操作步骤如:
关闭服务器;
把数据库目录拷贝到新的位置;
删除原来的数据库目录;
在原来的MySQL数据目录中创建一个同名符号链接指向新的位置;
重新启动服务器。
在windows下的操作方法不些不同,操作方法如下:
关闭服务器;
把数据库目录移动新的位置;
删除原来的数据库目录;
在原来数据目录下建一个同名的.sym文件,在文件中输入数据库新目录的全路径,如c:/mysql/newdir/mydb。这个文件就相当于Linux下的符号链接;
重启服务器。
为了支持符号链接功能,必须用--use-symbolic-links选项启动服务器;或在选项文件的[mysqld]节中添加use-symbolic-links选项。
MySQL必须是3.23.16以上版本且是max服务器(mysqld-max或mysqld-max-nt)。
要移动数据表,必须满足以下所有条件才行:
MySQL的版本必须是4.0或以上的版本;
操作系统必须有一个可用的realpath()调用;
移动的数据表必须是MyISAM类型的数据表。
在满足以上所有条件后,我们就可把.MYD数据文件和MYI索引文件移到新位置,再在原来位置创建两个同名符号链接指定新的位置。注意,.frm定义文件仍需留在原来的数据库目录中。
如以上条件不能全部满足,最好不要移动数据表文件。否则一旦你运行ALTER TABLE、OPTIMIZE TABLE、REPAIR TABLE语句对移动过的数据表进行优化或修改,这样数据表就会回到原来的位置,使移动操作失效。因为这些命令的执行过程是这样的:它会先在数据目录中创建一个临时数据表并对这个临时数据表进行优化或修改,然后删除原来的数据表(这里是你为了移动数据表而创建的一个符号链接),再把临时数据表更名为原来的数据表名称。这样一来,你移走的数据表就和这个数据库完全没有关系了。基于以下的不稳定因素,如无特殊必要,不建议移动数据表。
InnoDB表空间是通过在选项文件中使用innodb_data_home_dir和innodb_data_file_path选项列出InnoDB表空间组成文件清单的方法来配置的,所以我们可通过修改这些选项来重新安置InnoDB表空间的组成文件。步骤如下:
关闭服务器;
移动组成表空间的文件;
修改选项文件,指出组成表空间的文件的新位置;
重启服务器。
状态文件和日志文件的位置可通过选项文件或启动服务器时指定。