【问题标题】:Specifying data directory for a specific database in mysql在mysql中为特定数据库指定数据目录
【发布时间】:2011-04-26 17:09:44
【问题描述】:

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

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

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

编辑:

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

【问题讨论】:

    标签: mysql database ubuntu datadirectory


    【解决方案1】:

    对于 MyISAM 表,您只需在 CREATE TABLE 语句中提供 DATA DIRECTORYINDEX 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
    

    【讨论】:

    • 你能告诉我正确的查询是什么样的吗?每次我尝试它,它都说没有选择数据库。
    • 添加了带有要求的命令行示例(现有目录、正确的所有权、正确的 ENGINE)
    • 这有多完整?是不是像 foo.c/foo.h 文件一样可以拖放?我可以分享/tmp/datadirnfs 并在任何Linux 机器上共享吗?或者是否有公共文件存储在特定于该单台机器的其他地方?
    • @puk:拖放?也许当数据库关闭时,但我不会依赖它(我很少再使用 MyISAM,因为通常有更好的替代品,如 innodb、tokudb 等)。虽然您可以在技术上(AFAIK)在任何目录上拥有数据目录,包括 nfs 挂载(smb 挂载、ssh 挂载等),但您不能使用相同的 datadir 运行多个 mysql 实例,并且性能会很糟糕。这个是来做什么的?使用复制更好地提供副本,使用 MySQL 集群更好地服务于分离存储和 cpu。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 2012-03-06
      • 1970-01-01
      相关资源
      最近更新 更多