CREATE TABLE ts (id INT, purchased DATE) PARTITION BY RANGE(YEAR(purchased)) SUBPARTITION BY HASH(TO_DAYS(purchased)) ( PARTITION p0 VALUES LESS THAN (1990) ( SUBPARTITION s0 DATA DIRECTORY = '/disk0/data' INDEX DIRECTORY = '/disk0/idx', SUBPARTITION s1 DATA DIRECTORY = '/disk1/data' INDEX DIRECTORY = '/disk1/idx' ), PARTITION p1 VALUES LESS THAN (2000) ( SUBPARTITION s0 DATA DIRECTORY = '/disk2/data' INDEX DIRECTORY = '/disk2/idx', SUBPARTITION s1 DATA DIRECTORY = '/disk3/data' INDEX DIRECTORY = '/disk3/idx' ), PARTITION p2 VALUES LESS THAN MAXVALUE ( SUBPARTITION s0 DATA DIRECTORY = '/disk4/data' INDEX DIRECTORY = '/disk4/idx', SUBPARTITION s1 DATA DIRECTORY = '/disk5/data' INDEX DIRECTORY = '/disk5/idx' ) ); 我现在是考虑这个问题,如何解决。 这个是手册中的例子,是在linux下的,我如何在windows中实现,可以只把表分到 F:和G:两个磁盘下。
DATA DIRECTORY INDEX DIRECTORY windows 下这两个参数不起作用.
http://dev.mysql.com/doc/refman/5.1/zh/partitioning.html
手册比较详细
直接用MYSQLDUMP备份数据库,再新建数据库,导入备份
或者将整个MySQL目录转移到别的分区,然后修改配置文件,重新配置服务。
都可以的。
2:要是innodb的话,dump出来之后,修改innodb_data_file_path的最后一个表空间到新的目标目录,再还原.
3:把datadir的目录整个复制到新的目标地址,再用软连接连接到旧地址,不需要修改配置文件(适用myisam)---linux
4:在data目录的同级,新加一个后缀名为sym的文件.把某个库的地址指到新地址如(E:\data\Q)----windows
PARTITION partition_name
[VALUES {
LESS THAN (expr) | MAXVALUE
| IN (value_list) }]
[[STORAGE] ENGINE [=] engine-name]
[COMMENT [=] 'comment_text' ]
[DATA DIRECTORY [=] 'data_dir'] [INDEX DIRECTORY [=] 'index_dir']
[MAX_ROWS [=] max_number_of_rows]
[MIN_ROWS [=] min_number_of_rows]
[TABLESPACE [=] (tablespace_name)]
看分区的红色部分。可以指定某个分区的存储位置。
我现在是考虑这个问题,如何解决。
这个是手册中的例子,是在linux下的,我如何在windows中实现,可以只把表分到 F:和G:两个磁盘下。
windows 下这两个参数不起作用.
谁有在linux上分区的例子?
手册中的就是LINUX上的分区表例子
试试window的磁盘映射方案啊!
F:\mysql\data2\ 映射到G:\mysql\data啊!
楼主这方法你可以试下:
4:在data目录的同级,新加一个后缀名为sym的文本文件.要是把数据库指向G:
则在里面写入: G:\data\移过来的数据库文件夹名,这样就可以利用G盘了,不过针对的是一个数据库,不是某张表;既然是windows 用不了 data directory.只能用这个方法来减少空间不足的问题.还有个问题,在一台机器上运行两个或多个mysql服务器的例子有没,要注意什么注意 端口,SOCK文件,外部锁.
实际的情况还不知道会怎样。