【故障现象】
MySQL服务器莫名奇妙的挂掉,并且开启不了。
The server quit without updating PID file (/[FAILED]mysql/iZ2ze2hchind7gwe2ilateZ.pid)
【错误日志】
查找MySQL的错误日志文件
[root@iZ2ze2hchind7gwe2ilateZ ~]# find / -name mysql
/etc/rc.d/init.d/mysql
/etc/logrotate.d/mysql
/usr/lib64/mysql
/usr/bin/mysql
/usr/share/mysql
/var/lib/mysql
/var/lib/mysql/mysql
/var/lock/subsys/mysql
可以查到MySQL错误日志文件/var/lib/mysql/iZ2ze2hchind7gwe2ilateZ.err
错误日志
2018-05-18 09:25:05 17103 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
2018-05-18 09:25:05 17103 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2018-05-18 09:25:05 17103 [ERROR] Plugin 'InnoDB' init function returned error.
2018-05-18 09:25:05 17103 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2018-05-18 09:25:05 17103 [ERROR] Unknown/unsupported storage engine: InnoDB
2018-05-18 09:25:05 17103 [ERROR] Aborting
查看内存
[root@iZ2ze2hchind7gwe2ilateZ mysql]# free -m
total used free shared buffers cached
Mem: 996 927 68 0 1 13
-/+ buffers/cache: 913 82
Swap: 0 0 0
看的出来是交换内存Swap出现了问题
【故障解决】
# dd if=/dev/zero of=/swapfile bs=1M count=256
# mkswap /swapfile
# swapon /swapfile
查看内存
[root@iZ2ze2hchind7gwe2ilateZ mysql]# free -m
total used free shared buffers cached
Mem: 996 926 69 0 1 12
-/+ buffers/cache: 912 83
Swap: 255 27 228
写入挂载Swap到/etc/fstab
/swapfile swap swap defaults 0 0
启动mysql
[root@iZ2ze2hchind7gwe2ilateZ mysql]# service mysql start
Starting MySQL. [ OK ]
参考资料:
【linux设置虚拟内存(swap)解决mysql因内存不足挂掉的故障】
【MySQL测试环境遇到 mmap(xxx bytes) failed; errno 12解决方法】