微魔昨天在安装VestaCP的时候(DireVPS的OpenVZ年付套餐,系统是Debian 7 32bit minimal),卡在了MySQL的启动上(具体错误参见下文),而手动重启又无效(无法启动MySQL),查看内存已经被占满,经过一系列的排查,最终得到了真相。具体的错误及解决过程写下来供大家参考,当然本文也算是Linux使用过程中遇到问题的沧海一粟,希望对有需要的网友有所帮助吧。
安装VestaCP时MySQL无法启动的解决方案
问题描述
使用官方命令(如何安装)安装VestCP遇到如下错误
To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/bin/mysqladmin -u root password 'new-password' /usr/bin/mysqladmin -u root -h 16 password 'new-password' Alternatively you can run: /usr/bin/mysql_secure_installation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd /usr ; /usr/bin/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd /usr/mysql-test ; perl mysql-test-run.pl Please report any problems at http://bugs.mysql.com/ update-rc.d: using dependency based boot sequencing [FAIL] Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed! Error: mysql start failed
使用service mysql restart命令重启MySQL发现如下错误,
[ ok ] Stopping MySQL database server: mysqld. [....] Starting MySQL database server: mysqld/usr/sbin/mysqld: error while loading shared libraries: libcrypt.so.1: cannot map zero-fill pages: Cannot allocate memory [ .k [info] Checking for tables which need an upgrade, are corrupt or were not closed cleanly..
或
[ ok ] Stopping MySQL database server: mysqld. [FAIL] Starting MySQL database server: mysqld . . . . . . . . . . . . . . failed!
解决过程
进入MySQL的错误日志(默认目录/var/log/mysql/error.log或到MySQL配置文件中查看/etc/mysql/my.cnf)
发现如下错误记录
InnoDB: Error: pthread_create returned 11
于是断定是InnoDB引起的,使用如下命令解决
ulimit -s unlimited
问题解决,当然,本文的问题同样可以用禁用innodb(如果不需要该功能)的方法解决。
如果你也是在安装VestaCP的时候遇到同样的问题,那么问题已经解决,可以继续(强制)安装VestaCP了
bash vst-install-debian.sh --force
请问 ulimit -s unlimited 放在什么地方?因为试过在Putty 打下去,没有效果。谢谢
就是命令,直接输入即可。没效果是说问题还存在吗?