我有一个包含4个不同数据库的mysql数据库。其中一个数据库有很多读/写活动,可以在ramdisk上运行。由于数据布局的性质和所需的读取类型,memcached在这里不是一个有效的选择。因此,我想在ramdisk中运行其中一个数据库(数据持久性在这里不是问题)。
问题:无论如何都要为mysql数据库中的一个表设置数据目录?我希望3个数据库在我的硬盘上有一个数据目录,另一个指向ramdisk中的目录。如果没有,我怎么能在同一台服务器上安装两个mysql实例(我使用的是Ubuntu)。
顺便说一句:我知道MEMORY引擎,但这几乎没有提高性能(似乎没有真正在内存中运行)。
编辑:
我不小心要求为表格指定数据目录。我的实际意思是询问如何在mysql安装中为4个数据库中的1个数据库指定数据目录。该帖子已更新,以反映此更正。
答案 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并创建符号链接到其原始位置。