我的做法是这样的。环境:Nginx0.8.24 + PHP5.2.11 + MYSQL5.1.40,都是比较稳定的版本。
一,先备份数据库,这个不用说的。
二,建立一个新的空表。
- CREATE TABLE cdb_posts_1 (
- pid int(10) unsigned NOT NULL AUTO_INCREMENT,
- fid smallint(6) unsigned NOT NULL DEFAULT '0',
- tid mediumint(8) unsigned NOT NULL DEFAULT '0',
- `first` tinyint(1) NOT NULL DEFAULT '0',
- author varchar(15) NOT NULL DEFAULT '',
- authorid mediumint(8) unsigned NOT NULL DEFAULT '0',
- `subject` varchar(80) NOT NULL DEFAULT '',
- dateline int(10) unsigned NOT NULL DEFAULT '0',
- message mediumtext NOT NULL,
- useip varchar(15) NOT NULL DEFAULT '',
- invisible tinyint(1) NOT NULL DEFAULT '0',
- anonymous tinyint(1) NOT NULL DEFAULT '0',
- usesig tinyint(1) NOT NULL DEFAULT '0',
- htmlon tinyint(1) NOT NULL DEFAULT '0',
- bbcodeoff tinyint(1) NOT NULL DEFAULT '0',
- smileyoff tinyint(1) NOT NULL DEFAULT '0',
- parseurloff tinyint(1) NOT NULL DEFAULT '0',
- attachment tinyint(1) NOT NULL DEFAULT '0',
- rate smallint(6) NOT NULL DEFAULT '0',
- ratetimes tinyint(3) unsigned NOT NULL DEFAULT '0',
- `status` tinyint(1) NOT NULL DEFAULT '0',
- PRIMARY KEY (pid),
- KEY fid (fid),
- KEY authorid (authorid),
- KEY dateline (dateline),
- KEY invisible (invisible),
- KEY displayorder (tid,invisible,dateline),
- KEY `first` (tid,`first`)
- ) TYPE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=15036526 PARTITION BY RANGE (pid) (
- PARTITION p01 VALUES LESS THAN (4000000),
- PARTITION p02 VALUES LESS THAN (8000000),
- PARTITION p03 VALUES LESS THAN (12000000),
- PARTITION p04 VALUES LESS THAN (16000000),
- PARTITION p05 VALUES LESS THAN (20000000),
- PARTITION p06 VALUES LESS THAN (24000000),
- PARTITION p07 VALUES LESS THAN (28000000),
- PARTITION p08 VALUES LESS THAN (32000000),
- PARTITION p09 VALUES LESS THAN (36000000),
- PARTITION p10 VALUES LESS THAN (40000000),
- PARTITION p11 VALUES LESS THAN (44000000),
- PARTITION p12 VALUES LESS THAN (48000000),
- PARTITION p13 VALUES LESS THAN (52000000),
- PARTITION p14 VALUES LESS THAN MAXVALUE
- );
复制代码 三、把数据导入到新的posts表- insert into cdb_posts_1 select * from cdb_posts;
复制代码 四、对两个数据表进行改名
- RENAME TABLE `dz`.`cdb_posts` TO `dz`.`cdb_posts_bak` ;
- RENAME TABLE `dz`.`cdb_posts_1` TO `dz`.`cdb_posts` ;
复制代码 五、恢复论坛访问
出现问题:打开首页极慢,刷了N次后勉强打开,进入版块后一直刷不出来,MYSQL的CPU占用很高。一直提示"bad gateway",恢复没有分区的表又正常了。
请有经验的兄弟指导一下。谢谢。 |