SQL The server quit without updating PID file ([FAILED]sql/mysqld.pid)

阅读(2020)

在一台低配的阿里云机器上,启动MySQL时遇到如下提示:

Starting MySQL..The server quit without updating PID file ([FAILED]sql/mysqld.pid).

查对应的mysql日志mysqld.err(log默认位于数据存储的位置),关键信息如下:

InnoDB: mmap(137363456 bytes) failed; errno 12
2015-12-17 11:01:17 27971 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2015-12-17 11:01:17 27971 [ERROR] Plugin 'InnoDB' init function returned error.
2015-12-17 11:01:17 27971 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2015-12-17 11:01:17 27971 [ERROR] Unknown/unsupported storage engine: InnoDB
2015-12-17 11:01:17 27971 [ERROR] Aborting

内存空间不足分配导致MySQL启动失败。

修改 my.cnf,将innodb_buffer_pool_size的值设置得更小一些,问题依旧。

top查看一下,此时并未开启swap空间,那么就开一个吧。

  1. root权限
  2. dd if=/dev/zero of=/swapfile bs=1M count=1024
  3. mkswap /swapfile
  4. swapon /swapfile,如果提醒设置0600的权限更安全,那就设置一下吧,忽略也没关系。
  5. 确保每次重启会自动启动swap,在 /etc/fstab 文件后怎加一行:/swapfile swap swap defaults 0 0

重新启动MySQL,OK。

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