| 
 | 
 本帖最后由 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 |   
 
 
 
 |