分割大容量MediaWiki数据库
来自Jamesqi
--James Qi 2010年8月31日 (二) 00:47 (CST)
今年的这几个月里,新增加的数据量超过以往的很多倍,数据量从万、十万数量级上升到百万、千万,MySQL数据库占用的磁盘空间也在不断增长,服务器硬盘也告急了。
上周外出期间,同事去机房增加了移动硬盘,回公司后,今天一早就和同事商量扩容办法,并付诸实施。
从以前磁盘阵列中拆下来的热插拔SCSI硬盘挂接现在的服务器遇到点问题,没有成功认出。先添加了一个闲置的USB 2.0接口移动硬盘,虽然速度慢了些,但从上周的实验来看,一是MySQL扩容功能上可以满足,而是Squid缓存文件速度上也没有明显问题,所以还是可以采用的。
以前曾经采用过InnoDB方式存储,5月份MySQL出问题后花了很长时间来恢复数据,后来就改用了MyISAM,不过mingluji等新设立的多子域名网站采取的同一个库、不同前缀的表名称方式来设置MediaWiki中的数据库,虽然备份等时候方便一些,但也有着数据库过大,速度上互相影响,备份时整个库Lock等问题,这次就改为单独的库。
过程如下:
- 新建数据库,例如:mingluji-aomen_,名字这样取是为了照顾不更改sitemaps
- 将数据库目录移动到扩展的磁盘上,例如:mv /usr/local/var/mingluji-aomen_ /mnt/usb/mysql
- 使用软链接方式来让数据库可以映射到扩展的磁盘上,例如:ln -s /mnt/usb/mysql/mingluji-aomen_ /usr/local/var/mingluji-aomen_
- 避免备份、恢复中数据被更改,修改LocalSettings.php为readonly
- 运行从老库中逐个表备份、恢复到新库中的脚本
- 修改新库中的表名称,例如:alter table aomen_users rename to users
- 修改LocalSettings.php,链接新库,去掉readonly
- 测试访问、修改
- 删除老库中的表,例如:drop mingluji 中的aomen_开头表
这样就可以将以前的一个有数千个表的大库分为几十个每个有几十个表的独立的库。
在后面还会继续观察效果,特别是速度方面,如果没有明显问题的话,还可以采用这种USB 2.0的方式方便地扩展硬盘空间,现在的1T以上移动硬盘价格都只有几百元,相比以前的硬盘来说简直容量要上升很多倍。
标签:MediaWiki、数据库。 |
相关内容:
|