无法启动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的Ubuntu错误( https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/970366 ),我将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 。 虽然没有运气。

解决方法:我重新安装了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/my.cnf文件中的错误。

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

在启动后进程( /etc/init/mysql.conf )中调试失败的一种好方法是检查upstart日志:

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

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

错误:’无法通过套接字连接到本地MySQL服务器

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

从11.10升级到12.04后,当我遇到类似的MySQL错误(“作业无法启动”)时,在https://bugs.launchpad.net/ubuntu/+source/mysql-dfsg-5.1/+bug/上发表评论#27 573318?评论=对我来说都很完美。 引用:

对我来说问题是升级后文件/etc/apparmor.d/local/usr.sbin.mysqld不存在。 我手动复制一个空的(即只有标题注释),然后一切都很好。

对我来说,解决方案是删除线…

 set-variable = max_connections=200 

…这是MySQL 3.x语法,需要更改为

 max_connections=200 

我遇到过同样的问题。 原来是mysql my.cnf主从复制。 检查你的/var/log/mysql/error.log

我希望这有点帮助。 在使用apparmor浪费两个小时之前先检查mysql设置,这样可以正常工作。

我遇到了同样的问题,对我来说, bind-address在我的/etc/mysql/my.cnf文件中设置不正确。 因此,似乎my.cnf中任何不正确的内容都可能导致此问题。 我没有在日志中找到任何表明这是问题的东西。

我的问题是0%的可用空间! 再检查一遍 :-)

检查/tmp权限。 我有这个问题,经过多次googleing并重新启动后,我发现/tmp权限是755。

我将其更改为777并且mysql启动良好。

在mysqld-5.5.53 ubuntu 14.04.1自动更新后,mysql无法启动。 这些行出现在我的syslog中:

 Oct 27 06:05:51 hostname kernel: [ 593.168925] init: mysql post-start process (4997) terminated with status 1 Oct 27 06:05:51 hostname kernel: [ 593.178241] type=1400 audit(1477562751.231:31): apparmor="STATUS" operation="profile_replace" profile="unconfined" name Oct 27 06:05:51 hostname kernel: [ 593.204392] init: mysql main process (5032) terminated with status 1 Oct 27 06:05:51 hostname kernel: [ 593.204404] init: mysql respawning too fast, stopped 

通过创建此目录解决了该问题:

 sudo mkdir /var/lib/mysql-files sudo chmod 700 /var/lib/mysql-files sudo chown mysql:mysql /var/lib/mysql-files sudo /etc/init.d/mysql start 

刚刚更新了这里建议的MySQL和AppArmor版本,以解决在Amazon ec2实例上运行的Ubuntu 12.04上的这个问题。 我仍然得到错误几次但MySQL会自动重启。

我有相同的错误消息,但原因是不同的。 我的InnoDB表已损坏,因为整个文件系统进入只读模式。 我通过在/etc/mysql/my.cf中添加以下行来修复损坏

 innodb_force_recovery = 1 

我开始MySQL:

 sudo service mysql start 

MySQL确实启动了,我转储/导出了所有表。 我将innodb_force_recovery更改为0(=默认值)并重新启动MySQL:

 sudo service mysql restart 

我正在使用Ubuntu 12.04和MySQL 5.5。 在我发现问题之前花了很长时间,我希望我可以用这个答案帮助别人。 另见http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html

在我的情况下,问题是/etc/mysql/my.cnf文件权限。

我改变了它的内容,但它引起了错误

 kernel: [604528.290448] type=1400 audit(1424350956.727:193): apparmor="STATUS" operation="profile_replace" profile="unconfined" name="/usr/sbin/mysqld" pid=15008 comm="apparmor_parser" 

my.cnf权限是766,我将其更改为744,三个错误中的两个消失了。 仍然有一个类似的错误消息,但它并没有阻止mysql启动。

希望这可以帮助…

在我的情况下,我有一个错误的bind-address声明。 我运行ifconfig来发现EC2的私有IP地址,并在/etc/mysql/my.cnf文件中更新它。

在我的情况下,我在/ tmp上发现了一个权限问题。 我刚刚将tmp的目录权限设置为766并重启mysql服务。 修好了。