在MySQL,MyISAM中,是否可以将带分区的表改为多个硬盘?

时间:2011-09-27 00:01:31

标签: mysql partitioning myisam hard-drive

在MySQL中,MyISAM,是否可以将带有分区的表改为多个硬盘?

我的硬盘驱动器几乎耗尽了它的磁盘空间。

有没有人面临这个问题,你是如何解决的?

3 个答案:

答案 0 :(得分:1)

是的,可以在多个驱动器上对表进行分区。请查看官方手册,其中深入探讨了这一主题。

http://dev.mysql.com/doc/refman/5.5/en/partitioning.html

以下是在多个驱动器上对现有表进行分区的示例:

ALTER TABLE mytable
    PARTITION BY RANGE (mycolumn)(
     PARTITION p01 VALUES Less Than (10000)
       DATA DIRECTORY = "/mnt/disk1"
       INDEX DIRECTORY = "/mnt/disk1",
     PARTITION p02 VALUES Less Than (20000)
       DATA DIRECTORY = "/mnt/disk2"
       INDEX DIRECTORY = "/mnt/disk2",
     PARTITION p03 VALUES Less Than MAXVALUE
       DATA DIRECTORY = "/mnt/disk3"
       INDEX DIRECTORY = "/mnt/disk3"
    );

请注意,这需要关闭NO_DIR_IN_CREATE。它似乎不适用于Windows,它似乎不适用于InnoDB。

如果最后一个分区上的磁盘空间不足,可以使用以下语句将其拆分:

ALTER TABLE mytable REORGANIZE PARTITION p03 INTO 
( 
    PARTITION p03 VALUES Less Than (30000)
       DATA DIRECTORY = "/mnt/disk3"
       INDEX DIRECTORY = "/mnt/disk3",
     PARTITION p04 VALUES Less Than MAXVALUE
       DATA DIRECTORY = "/mnt/disk4"
       INDEX DIRECTORY = "/mnt/disk4"
);

答案 1 :(得分:0)

您可以移动整个mysql数据目录。更改datadir中的/etc/mysql/my.cnf选项。

如果您只想移动一个数据库,可以停止服务器,将目录(/var/lib/mysql/DATABASE_NAME)移动到其他位置,然后将符号链接添加到新位置(ln -s NEW_LOCATION /var/lib/mysql/DATABASE_NAME)。

确保备份!!!!!!在搞乱之前!!!!!

mysqldump --all-databases作为可以访问所有内容的用户,可能是root。)

答案 2 :(得分:0)

诀窍是像你通常那样创建分区,将选定的分区移动到其他硬盘并将它们符号链接回/var/lib/mysql