Mediawiki迁移

昨天晚上帮acgn.moe搬迁了服务器至国内阿里云。真是蠢死我了。

我是简单粗暴的迁移党,直接锁死数据库($wgReadOnly)然后

cd htdocs
zip -r 233.zip *

打包了所有文件直接下载。

阿里云连接linode的速度只有20kb/s……蛋疼,本机中转一下,临时提了阿里云的带宽,云服务就是方便……移动大法好,下载Linode可以达到5M/s

linode那边我是用phpmyadmin导出了数据库,阿里云这边没装,而且数据库也挺大了,就用命令行导入了数据库

mysql -u root -p
>>输入密码
use wiki
source ~/wiki.sql

哗啦啦一大片然后就好了。

解压文件,删除临时文件,配置rewrite,更改DNS,上线CDN,完成!

不过昨天到今天发现mysql崩溃了好多次,查了下日志:

150131 12:38:38 InnoDB: Fatal error: cannot allocate memory for the buffer pool
150131 12:38:38 [ERROR] Plugin 'InnoDB' init function returned error.
150131 12:38:38 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
150131 12:38:38 [ERROR] Unknown/unsupported storage engine: InnoDB
150131 12:38:38 [ERROR] Aborting

……无法分配内存是什么鬼。

先配置了swap,然后看了下my.cnf,发现innodb 相关的都没开?

innodb_buffer_pool_size = 128M
innodb_additional_mem_pool_size = 4M
innodb_log_file_size = 128M
innodb_log_files_in_group = 2
innodb_log_buffer_size = 2M
innodb_flush_log_at_trx_commit = 1

根据实际内存设置了一下(不如上),然后service mysqld restart,结果又报错了

150131 13:14:09 InnoDB: Initializing buffer pool, size = 64.0M
150131 13:14:09 InnoDB: Completed initialization of buffer pool
InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 16777216 bytes!
150131 13:14:09 [ERROR] Plugin 'InnoDB' init function returned error.

原来是log文件大小重新设置后的原因,删掉了mysql/data目录下的ib_logfile0,重启,完毕。

=================================

2015年3月29日更新

其实,问题根本不是这个。

问题的关键在于阿里云的ECS的硬盘的IO实在太垃圾了。

在内存转储的时候直接IO就卡死导致内存爆掉。

给我们带来的血的教训是,千万不要在ECS上自己搭建数据库服务,宁可加钱上RDS。

启用RDS一个月以来,基本没有出现过类似的问题。

顺便一提,感觉阿里云的CDN计费有点奇怪,明明每个月都可以用掉大概好几个G的流量,账单出来却只有几分钱。

兔兔兔兔兔兔,下面是菊苣们的吐槽时间~

“Mediawiki迁移”的5个回复

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注