在mysql中指定特定数据库的数据目录

时间:2010-10-17 22:29:02

标签: mysql database ubuntu datadirectory

我有一个包含4个不同数据库的mysql数据库。其中一个数据库有很多读/写活动,可以在ramdisk上运行。由于数据布局的性质和所需的读取类型,memcached在这里不是一个有效的选择。因此,我想在ramdisk中运行其中一个数据库(数据持久性在这里不是问题)。

问题:无论如何都要为mysql数据库中的一个表设置数据目录?我希望3个数据库在我的硬盘上有一个数据目录,另一个指向ramdisk中的目录。如果没有,我怎么能在同一台服务器上安装两个mysql实例(我使用的是Ubuntu)。

顺便说一句:我知道MEMORY引擎,但这几乎没有提高性能(似乎没有真正在内存中运行)。

编辑:

我不小心要求为表格指定数据目录。我的实际意思是询问如何在mysql安装中为4个数据库中的1个数据库指定数据目录。该帖子已更新,以反映此更正。

2 个答案:

答案 0 :(得分:4)

对于MyISAM表,您只需提供DATA DIRECTORY& CREATE TABLE语句中的INDEX DIRECTORY子句(如果您对表进行分区,则必须按照我认为的分区设置它。)

$ mkdir /tmp/datadir
$ sudo chown mysql:mysql /tmp/datadir/
$ mysql
mysql> use test;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> create table otherlocation (id int) ENGINE=MyISAM, DATA DIRECTORY='/tmp/datadir', INDEX DIRECTORY='/tmp/datadir';

Query OK, 0 rows affected (0.01 sec)
mysql> Bye
$ ls -lah /tmp/datadir/
total 496K
drwxr-xr-x  2 mysql mysql 4.0K Oct 18 00:57 .
drwxrwxrwt 32 root  root  484K Oct 18 00:55 ..
-rw-rw----  1 mysql mysql    0 Oct 18 00:57 otherlocation.MYD
-rw-rw----  1 mysql mysql 1.0K Oct 18 00:57 otherlocation.MYI

答案 1 :(得分:1)

您可以将文件移动到ramdisk并创建符号链接到其原始位置。