无法启动mysql-mysql重新生成速度太快,已停止


33

今天,我重新安装了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

系统日志显示初始化脚本存在问题:

> 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

有任何想法吗?


我已经尝试过的事情:

我用谷歌搜索发现了一个带有apparmor的Ubuntu bug(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正在运行,因此我可以继续进行所需的工作。但是我需要在某个时候对其进行编辑-希望我能找到一个解决方案,否则该问题将在那时得到解答...

Answers:


29

我终于弄清楚了这个问题。基本上,某些参数的定义已从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*

我没有这个问题,但是dpkg-reconfigure mysql-server-5.5修复了我的配置中的任何错误。
David Purdue 2014年

在我的情况下,问题出在/etc/mysql/my.cnf中是属性名称错误。...来自此博客:dangtrinh.com/2014/05/… ,运行mysqld -v。我尝试谷歌搜索mysql退出代码7,但未成功。我的猜测是退出代码7与解析mysql配置文件失败有关。
MaasSql 2015年

我遇到了同样的问题,但由于我的错误配置在/etc/mysql/conf.d/*下,并且因为有名为/var/log/mysql.*的旧日志,导致我很难注意到,因此很难跟踪。活动日志/ var / log / mysql / *。
戴夫·伯特

1
旁注:utf8_unicode_ci比较好。现在甚至utf8mb4_unicode_ci
阿克瑟

10

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上写过有关此修复程序的信息


原来我的VM只是内存不足。设置innodb_buffer_pool_size较低的值是解决方案的一部分,但请注意,可能只是内存不足。
thaddeusmt

10

我有一个类似的问题。令人沮丧的是,因为我看不到任何错误日志来表明问题所在。

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

我是通过直接以mysql用户身份运行mysqld来发现这一点的。

# su mysql
# mysqld

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


2
这是一个很好的技巧,我一直在努力从mysql中获取一些有意义的调试信息。谢谢!
eageranastst 2013年

3

我也有类似的问题。下面的项目说它们已从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

完善!正是什么让我失望。谢谢。
Jim W.

3

看起来可能归结于MySQL配置错误(位于/etc/mysql/my.cnf和中的文件)/etc/mysql/conf.d/

在我的情况下,这是一个错误的bind-address值,因为我的计算机的IP地址已更改,并且MySQL无法再绑定。欢迎在这篇博客文章中进一步了解此内容


2

调试启动后流程(/etc/init/mysql.conf)中的故障的一种好方法是检查启动日志:

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

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

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

在我的情况下,它是由一个缺失造成的user环境下[mysqld]my.cnf



1

对我来说,解决方案是删除行...

set-variable = max_connections=200

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

max_connections=200

1

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

我希望这会有所帮助。首先检查mysql设置,然后再花两个小时用apparmor正常工作。


1

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



1

检查/tmp权限。我遇到了这个问题,经过很多次的搜索和重新启动,我发现/tmp权限为755。

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


这件事情在古代,但是这是我的问题....说不上来它是如何改变了... ...
TheHidden

在某些情况下,可以通过更改文件系统或/tmp在新分区上挂载。
shgnInc 2015年

1

在自动更新到mysqld-5.5.53 ubuntu 14.04.1之后,mysql无法启动。这些行显示在我的系统日志中:

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

0

刚刚按照此处的建议更新了MySQL和AppArmor版本,以解决在Amazon ec2实例上运行的Ubuntu 12.04上的此问题。几次我仍然收到错误,但是MySQL自动重新启动。


1
欢迎来到Ask Ubuntu!虽然从理论上讲这可以回答问题,但最好在此处包括答案的基本部分,并提供链接以供参考。
Ringtail 2012年

0

我有相同的错误消息,但原因不同。我的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/zh-CN/forcing-innodb-recovery.html


0

就我而言,问题是/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启动。

希望这可以帮助...


0

就我而言,我的bind-address声明有误。我跑去ifconfig发现EC2的专用IP地址,并在/etc/mysql/my.cnf文件中对其进行了更新。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.