|
本帖最后由 edwin_chen 于 2009-10-20 19:00 编辑
回来看旧帖,补充一下自己的认识
问题:“我的目的是希望一个innodb的表的2个分区,分别在2个不同的磁盘上”
Innodb可以在独立表空间方式下达到目的,方法如下:
1.。在my.cnf中加入innodb_file_per_table并重启Mysql
2. 创建分区表例如
- CREATE TABLE users (
- uid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
- name VARCHAR(30) NOT NULL DEFAULT '',
- email VARCHAR(30) NOT NULL DEFAULT ''
- )
- ENGINE=INNODB
- PARTITION BY RANGE (uid) (
- PARTITION p0 VALUES LESS THAN (100)
- DATA DIRECTORY = '/sda3/mysql'
- INDEX DIRECTORY = '/sda3/mysql',
- PARTITION p1 VALUES LESS THAN (200)
- DATA DIRECTORY = '/sda3/mysql'
- INDEX DIRECTORY = '/sda3/mysql',
- PARTITION p2 VALUES LESS THAN (300)
- DATA DIRECTORY = '/sdb3/mysql'
- INDEX DIRECTORY = '/sdb3/mysql',
- PARTITION p3 VALUES LESS THAN MAXVALUE DATA DIRECTORY = '/data6/data'
- INDEX DIRECTORY = '/sdb3/mysql'
- );
复制代码 3.停止Mysql。这时在data目录下会有多个ibd文件(每个分区一个),将ibd文件move到不同的磁盘中,使用ln命令在原来的data目录下建上link。重启Mysql
这样就可以负载磁盘I/O到不同的磁盘了。
另外需要说明的是Innodb并不支持DATA DIRECTORY and INDEX DIRECTORY参数。
指定这2个参数不会报错,但是不起作用。关于这个问题可以参考
http://forums.mysql.com/read.php?106,155255,155255#msg-155255 |
|