分割大容量MediaWiki 数据库

当新增加的数据量超过以往的很多倍,数据量从万、十万数量级上升到百万、千万,MySQL数据库占用的磁盘空间也在不断增长,服务器硬盘就会不够用,可以想扩容办法。

如果采用InnoDB方式存储不方便,可以考虑改用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_开头表

这样就可以将以前的一个有数千个表的大库分为几十个每个有几十个表的独立的库。