跨多个磁盘传播mysql数据

Posted

技术标签:

【中文标题】跨多个磁盘传播mysql数据【英文标题】:spreading mysql data across multiple disks 【发布时间】:2012-02-16 07:37:15 【问题描述】:

我在 centos 上有一个大型 mysql 数据库和两个小磁盘,如何让它同时使用两个磁盘?

【问题讨论】:

@Fahim Parkar:我不确定它在概念上是如何工作的,/var/lib/mysql 包含所有数据文件,不确定如何将其配置为跨多个文件夹存储数据 【参考方案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"
);

【讨论】:

以上是关于跨多个磁盘传播mysql数据的主要内容,如果未能解决你的问题,请参考以下文章

MySQL - 如何自动管理多个数据库的更新?

mysql 分区指定分区表数据存储路径,可以支持跨磁盘

跨多个磁盘优化虚拟机存储组合的算法

mysql把一个大表拆分多个表后,如何解决跨表查询效率问题

mysql表分区使用及详细介绍

如何在 Java 中跨多个不同的 SQL 数据库创建 ORM?