红联Linux门户
Linux帮助

Ubuntu 14.04系统VestaCP面板MySQL无法正常运行问题解决

发布时间:2016-03-15 15:24:41来源:linux网站作者:kaijia.me

VestaCP是一款新兴的虚拟主机面板,它以LAMP为核心(也支持Python程序),使用Nginx做前端,同时还支持FTP、邮件和DNS服务器功能,整体功能非常简洁强大,更重要的是,它的界面设计符合潮流。

Kaijia最近也开始学习使用VestaCP并将一台运行Virtualmin的服务器搬到了VestaCP平台下,在这一过程中Kaijia遇到了很多问题。由于VestaCP一开始设计只考虑了RedHat/CentOS,Debian/Ubuntu的支持相对比较欠缺,尤其是Ubuntu 14.04相较其他几个版本变化很大(PHP 5.5和Apache 2.4了,而VestaCP支持的其他发行版基本都在PHP 5.3和Apache 2.2,另外还有upstart/systemd等问题),相应单一发行版的Bug也特别多。在今后的文章中Kaijia将会不定期分享在Ubuntu 14.04系统下使用VestaCP面板遇到的问题和解决经验。


比如这次遇到的问题经过分析也应该是Ubuntu 14.04系统特有的。一开始完成VestaCP安装后系统可以正常运行并没有发现任何错误,但是重启服务器之后却出现了MySQL无法使用的问题,无法通过VestaCP面板创建数据库,同时站点也无法连接到数据库。查看MySQL的错误日志可以看到提示InnoDB文件已被锁定:

InnoDB: Unable to lock ./ibdata1, error: 11
InnoDB: Check that you do not already have another mysqld process
InnoDB: using the same InnoDB data or log files.


登录到系统观察了一下发现系统同时有两个MySQL进程在运行。一个/usr/sbin/mysql由init启动,而另一个/usr/sbin/mysql则由mysqld_safe启动,而如果使用service mysql restart命令重新启动服务MySQL即可恢复。于是搜索了一下,没能找到相似的错误报告,最后在VestaCP的论坛里面发现了一个俄文帖子(https://forum.vestacp.com/viewtopic.php?f=32&t=5070)(没错,VestaCP是毛子开发的因此基本上都是俄文),借助强大的翻译功能(需使用俄翻英),大致理解了造成此问题的原因。

Ubuntu 14.04采用了upstart作为启动管理,安装MySQL时将会自动向upstart的控制目录加入一个/etc/init/mysql.conf文件以实现MySQL的自启动。而在安装VestaCP的时候,安装脚本vst-install-ubuntu.sh错误地执行了命令update-rc.d mysql defaults在/etc/rcN.d/文件夹添加了MySQL的自启动,从而造成了系统启动时同时从/etc/init/和/etc/rcN.d/两个目录下启动了两个均使用/etc/mysql/my.ini配置文件的MySQL实例,进而造成了./ibdata1文件被锁死。


已经向VestaCP汇报了Bug,在官方解决这个错误之前禁用以上两个启动项中的任意一个即可解决问题。在终端中输入:
update-rc.d mysql disable

通过update-rc.d停用/etc/rcN.d/启动的MySQL,或是在终端中输入:
sh -c 'echo manual >> /etc/init/mysql.override'


停用通过/etc/init/mysql.conf启动的MySQL。推荐前者命令,因为它同时也修复了错误,而后者可以说是一个规避措施。之后重启系统MySQL就恢复正常了。

所以可以这样概括这个面板的现状,VestaCP在Debian/Ubuntu环境下的仍然不稳定,不适合用在生产环境上。随着问题的不断修补,系统稳定之后这款面板肯定大有前途。


本文永久更新地址:http://www.linuxdiyf.com/linux/18958.html