在MySQL中,MyISAM,是否可以将带有分区的表改为多个硬盘?
我的硬盘驱动器几乎耗尽了它的磁盘空间。
有没有人面临这个问题,你是如何解决的?
答案 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
。