导致这个问题发生的原因貌似有很多,所以关键是定位到真正的问题。
mysql启动报错会生成一个.err文件。我的centos的该文件存在于/var/lib/mysql/*.err
。打开这个文件就会看到启动错误的原因。
我这里是:
2020-12-01 22:45:51 18295 [Note] InnoDB: Using atomics to ref count buffer pool pages
2020-12-01 22:45:51 18295 [Note] InnoDB: The InnoDB memory heap is disabled
2020-12-01 22:45:51 18295 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins
2020-12-01 22:45:51 18295 [Note] InnoDB: Memory barrier is not used
2020-12-01 22:45:51 18295 [Note] InnoDB: Compressed tables use zlib 1.2.3
2020-12-01 22:45:51 18295 [Note] InnoDB: Using Linux native AIO
2020-12-01 22:45:51 18295 [Note] InnoDB: Using CPU crc32 instructions
2020-12-01 22:45:51 18295 [Note] InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
2020-12-01 22:45:51 18295 [ERROR] InnoDB: Cannot allocate memory for the buffer pool
2020-12-01 22:45:51 18295 [ERROR] Plugin 'InnoDB' init function returned error.
2020-12-01 22:45:51 18295 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
2020-12-01 22:45:51 18295 [ERROR] Unknown/unsupported storage engine: InnoDB
2020-12-01 22:45:51 18295 [ERROR] Aborting
针对于这个错误,再去百度、google。就发现错误因为竟然是wordpress启动了php-fpm,进而导致的mysql启动失败。我停了php-fpm之后再启动mysql。就看到了久违的success。
后来再一次遇到这个错误,发现不能停到wordpress也不能解决问题。后来查看内存占用free
命令如下:
[root@node1 ~]# free
total used free shared buffers cached
Mem: 1019772 575584 444188 164 5840 148308
-/+ buffers/cache: 421436 598336
Swap: 0 0 0
发现根本没有swap空间。综合上一次的问题。很可能是因为内存不足导致。所以添加swap空间之后就启动成功了。
我是centos 6.10。诸位可根据自己的系统进行配置。
$ sudo dd if=/dev/zero of=/swapfile bs=1M count=1024 #增加1G的SWAP进去
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
[root@node1 ~]# free
total used free shared buffers cached
Mem: 1019772 951116 68656 172 3224 489856
-/+ buffers/cache: 458036 561736
Swap: 1048572 0 1048572
[root@node1 ~]# service mysql start
Starting MySQL.. [ OK ]
[root@node1 ~]#