0%

阿里云 Vps 上 Mysql 挂掉的解决办法

用阿里云的 vps 用作 blog 服务器,系统很稳定,已经 100 多天一直运行正常,大概从上个月开始发现 blog 的 mysql 会有时挂掉,会收到短信通知。之前没太追究,重新启动了 mysql 解决的。今天上午又收到短信,已经第三次了。

查了一下日志,三次基本都是一样的:

1
2
3
4
5
6
7
8
9
10
11
12
13
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.cnfmysqld 下增加下面一句:

    1
    innodb_buffer_pool_size = 64M

    还要设置一下 swap 分区,因为我的 vps 是没有 swap 分区的,通过 fdisk -l1mount 看不到 swap 的信息,需要手动添加一下。

  2. 添加 swap 分区的步骤:
    (1) dd if=/dev/zero of=/swapfile bs=1M count=1024
    (2) mkswap /swapfile
    (3) swapon /swapfile
    (4) 添加这行: /swapfile swap swap defaults 0 0/etc/fstab

    目前已经设置了 swap 分区,并重启了 mysql,后续观察一下看看还会不会出现吧。

参考:http://stackoverflow.com/questions/10284532/amazon-ec2-mysql-aborting-start-because-innodb-mmap-x-bytes-failed-errno-12

补充,经过近 2 个月观察,没再发生 down 掉的情况。

欢迎关注我的其它发布渠道