MYSQL 分区如何指定不同存储路径(多块磁盘)

理论

可以针对分区表的每个分区指定存储路径,对于innodb存储引擎的表只能指定数据路径,因为数据和索引是存储在一个文件当中,对于MYISAM存储引擎可以分别指定数据文件和索引文件,一般也只有RANGE、LIST分区、sub子分区才有可能需要单独指定各个分区的路径,HASH和KEY分区的所有分区的路径都是一样。RANGE分区指定路径和LIST分区是一样的,这里就拿LIST分区来做讲解。

一、MYISAM存储引擎

CREATE TABLE partitioned_table (
    id INT,
    name VARCHAR(50)
)ENGINE=innodb
PARTITION BY RANGE (id) (
    PARTITION p0 VALUES LESS THAN (100), 
        INDEX DIRECTORY = '/mnt/p202307' 
        DATA DIRECTORY = '/mnt/p202307',
        
    PARTITION p1 VALUES LESS THAN (200)
        DATA DIRECTORY = '/mnt/p202308'
        INDEX DIRECTORY = '/mnt/p202307'
        
)

注意:MYISAM存储引擎的数据文件和索引文件是分库存储所以可以为数据文件和索引文件定义各自的路径,INNODB存储引擎只能定义数据路径。

二、INNODB存储引擎

CREATE TABLE partitioned_table (
    id INT,
    name VARCHAR(50)
)ENGINE=innodb
PARTITION BY RANGE (id) (
    PARTITION p0 VALUES LESS THAN (100), 
        DATA DIRECTORY = '/mnt/p202307',
        
    PARTITION p1 VALUES LESS THAN (200)
        DATA DIRECTORY = '/mnt/p202308'
)

 以上只是例子,生产环境中请按照真实路径进行设置。

设置的路径,必须是mysql 属组才可以设置成功

你可能感兴趣的:(mysql,数据库)