用阿里云的vps用做blog服务器,系统很稳定,已经100多天一直运行正常,大概从上个月开始发现blog的mysql会有时挂掉,会收到短信通知。以前没太追究,从新启动了mysql解决的。今天上午又收到短信,已经第三次了。mysql
查了一下日志,三次基本都是同样的:sql
130728 6:50:14 [Note] Plugin 'FEDERATED' is disabled. 130728 6:50:14 InnoDB: The InnoDB memory heap is disabled 130728 6:50:14 InnoDB: Mutexes and rw_locks use GCC atomic builtins 130728 6:50:14 InnoDB: Compressed tables use zlib 1.2.3.4 130728 6:50:14 InnoDB: Initializing buffer pool, size = 128.0M InnoDB: mmap(137363456 bytes) failed; errno 12 130728 6:50:14 InnoDB: Completed initialization of buffer pool 130728 6:50:14 InnoDB: Fatal error: cannot allocate memory for the buffer pool 130728 6:50:14 [ERROR] Plugin 'InnoDB' init function returned error. 130728 6:50:14 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 130728 6:50:14 [ERROR] Unknown/unsupported storage engine: InnoDB 130728 6:50:14 [ERROR] Aborting 130728 6:50:14 [Note] /usr/sbin/mysqld: Shutdown complete
解决方法:
1) 在 /etc/mysql/my.cnf 的 mysqld 下增长下面一句:服务器
innodb_buffer_pool_size = 64M
还要设置一下swap分区,由于个人vps是没有swap分区的,经过fdisk -l
和 1mount
看不到swap的信息,须要手动添加一下。ui
2) 添加swap分区的步骤:阿里云
2.1) dd if=/dev/zero of=/swapfile bs=1M count=1024 2.2) mkswap /swapfile 2.3) swapon /swapfile 2.4) 添加这行: /swapfile swap swap defaults 0 0 到 /etc/fstab
目前已经设置了swap分区,并重启了mysql,后续观察一下看看还会不会出现吧。atom
参考:http://stackoverflow.com/questions/10284532/amazon-ec2-mysql-aborting-start-because-innodb-mmap-x-bytes-failed-errno-12spa
补充,通过近2个月观察,没再发生down掉的状况。日志