当前位置: 首页>>技术教程>>正文


无法启动mysql – mysql respawning太快,停了

, , ,

问题描述

今天我重新安装了ubuntu 12.04并开始设置我的本地开发环境。我安装了mysql并编辑了/etc/mysql/my.cnf来优化InnoDB但是当我尝试重新启动mysql时,它失败并出现错误:

[20:53][tom@Pochama:/var/www/website] (master) $ sudo service mysql restart
start: Job failed to start

syslog显示init脚本存在问题:

> tail -f /var/log/syslog

Apr 28 21:17:46 Pochama kernel: [11840.884524] type=1400 audit(1335644266.033:184): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=760 comm="apparmor_parser"
Apr 28 21:17:47 Pochama kernel: [11842.603773] init: mysql main process (764) terminated with status 7
Apr 28 21:17:47 Pochama kernel: [11842.603841] init: mysql main process ended, respawning
Apr 28 21:17:48 Pochama kernel: [11842.932462] init: mysql post-start process (765) terminated with status 1
Apr 28 21:17:48 Pochama kernel: [11842.950393] type=1400 audit(1335644268.101:185): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=811 comm="apparmor_parser"
Apr 28 21:17:49 Pochama kernel: [11844.656598] init: mysql main process (815) terminated with status 7
Apr 28 21:17:49 Pochama kernel: [11844.656665] init: mysql main process ended, respawning
Apr 28 21:17:50 Pochama kernel: [11845.004435] init: mysql post-start process (816) terminated with status 1
Apr 28 21:17:50 Pochama kernel: [11845.021777] type=1400 audit(1335644270.173:186): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=865 comm="apparmor_parser"
Apr 28 21:17:51 Pochama kernel: [11846.721982] init: mysql main process (871) terminated with status 7
Apr 28 21:17:51 Pochama kernel: [11846.722001] init: mysql respawning too fast, stopped

有任何想法吗?


我尝试过的事情:

我用Google搜索并发现apparmor(https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/970366)的Ubuntu错误,我将apparmor从强制模式更改为抱怨模式:

sudo apt-get install apparmor-utils
sudo aa-complain /usr/sbin/mysqld
sudo /etc/init.d/apparmor reload

但它没有帮助。我还是无法启动mysql。

我还认为问题可能是因为InnoDB日志文件的大小与mysql所期望的大小不同。我在重新启动之前删除了innodb日志文件:sudo mv /var/lib/mysql/ib_logfile* /tmp。虽然没有运气。

解决方法:我是re-installed 12.04,请确保不要以任何方式触碰/etc/mysql/my.cnf。 Mysql正在工作,所以我可以继续我需要做的事情。但是我需要在某个时候编辑它 – 希望我已经找到了解决方案,或者这个问题已经得到了回答……

最佳解决思路

我终于找到了问题。基本上,某些参数的定义已从先前版本的mysql中删除,并已被替换为不同的名称。要修复,请在/etc/mysql/my.cnf中替换:

# Tom Added to ensure the server character set is set to utf8
default-character-set = utf8
default-collation     = utf8_general_ci

有:

# Tom Added to ensure the server character set is set to utf8
character_set_server  = utf8
collation_server      = utf8_general_ci

这是关联的启动板错误报告:https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/958120

或轻松运行:

# Miraz added dpkg-reconfigure
dpkg-reconfigure mysql-server-5.5

但请确保没有安装旧的mysql版本安装,如果有,请删除:

# Miraz quick mysql package check
dpkg -l *mysql*

次佳解决思路

Innodb有一个默认设置(innodb_buffer_pool_size)设置为128M – 这可能对您的服务器来说太大了(特别是如果您使用的是小型Amazon EC2 AMI – 我是这样的)对我有用的修复是添加以下内容线路到/etc/mysql/my.cnf

innodb_buffer_pool_size = 16M

我在这里写了关于这个修复的文章http://www.mlynn.org/2012/07/mysql-5-5-on-ubuntu-12-04-job-failed-to-start

第三种解决思路

我遇到了类似的问题。这令人沮丧,因为我看不到任何错误日志,表明问题是什么。

就我而言,我为innodb_buffer_pool_size设置的值对于服务器的内存来说太大了。

我通过直接运行mysqld作为mysql用户发现了这一点。

# su mysql
# mysqld

这样您实际上可以看到错误输出。

第四种思路

我也有类似的问题。下面的项目说它们已从mysql服务器5.5中删除。如果您在my.cnf中有它们,它将无法启动。用#评论它们。 (信息来自:http://dev.mysql.com/doc/refman/5.5/en/replication-options-slave.html)

受影响的选项显示在此列表中:

 --master-host
 --master-user
 --master-password
 --master-port
 --master-connect-retry
 --master-ssl
 --master-ssl-ca
 --master-ssl-capath
 --master-ssl-cert
 --master-ssl-cipher
 --master-ssl-key

第五种思路

它似乎归结为位于/etc/mysql/my.cnf中的MySQL配置和/etc/mysql/conf.d/中的文件中的错误。

在我的情况下,这是一个错误的bind-address值,因为我的机器的IP地址已经改变,MySQL无法再绑定。欢迎在this blog article中了解更多信息。

第六种思路

调试post-start进程(/etc/init/mysql.conf)中的故障的一种好方法是检查upstart日志:

sudo tail -f /var/log/upstart/mysql.log 

这给了我一个套接字错误:

error: ‘Can’t connect to local MySQL server through socket

在我的情况下,它是由my.cnf[mysqld]组下缺少user设置引起的

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2880.html,未经允许,请勿转载。