MYSQL的数据库保存在安装目录下的DATA文件夹里,以数据库名称作为文件夹名称。
现在希望A数据库保存在D盘的DATA_A下,B数据库保存在D盘的DATA_B下,似乎没有相关的配置项可以做到。
但事实上还是有办法的,需要用到 .sym 文件。下面贴出操作步骤:
1:数据库安装目录在 D:\mysql6\data
2:NET STOP MYSQL 停止MYSQL服务
3:在数据库安装目录的DATA下新建一个文本文件,名称为你要分离的数据库名称.sym,如food.sym。文本文件的内容为:D:\data\food\ 表明此数据库的目录指向D:\data\food\,保存。
4:到D盘下建DATA文件夹,到DATA下建文件夹food.
5:net start mysql 重新启动MYSQL服务
6:查看数据库,能发现多了一个名称为FOOD的数据库了。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| cpc |
| food |
| mysql |
| test |
+--------------------+
5 rows in set (0.00 sec)
|
选择FOOD数据库,创建表,插入数据
mysql> use food;
Database changed
mysql> create table b(b int);
Query OK, 0 rows affected (0.14 sec)
mysql> insert into b values(1),(2),(3);
Query OK, 3 rows affected (0.11 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from b;
+------+
| b |
+------+
| 1 |
| 2 |
| 3 |
+------+
3 rows in set (0.00 sec)
mysql>
|
一切正常。到D盘DATA下的FOOD看看,是不是多了个b.frm文件?
数据库文件分离成功完成。
不过这样的方法有一定的局限性:
1:如果数据库里安装目录下有个FOOD的文件夹,那么此种方法失效。
2:如果打开了独享文件开关,此办法失效。--innodb_file_per_table
3:操作远端服务的时候,比如到192.168.0.100上建个分离的数据库,需要在.SYM里写上完整路径 \\192.168.0.100\DATA\FOOD
英文原版资料链接
http://dev.mysql.com/doc/refman/5.1/en/windows-symbolic-links.html
翻译的对的,请批评指出。