No se puede iniciar mysql - mysql reaparece demasiado rápido, se detiene


33

Hoy hice una nueva instalación de ubuntu 12.04 y comencé a configurar mi entorno de desarrollo local. Instalé mysql y edité /etc/mysql/my.cnfpara optimizar InnoDB pero cuando intento reiniciar mysql, falla con un error:

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

El syslog revela que hay un problema con el script de inicio:

> 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

¿Algunas ideas?


Cosas que ya probé:

Busqué en Google y encontré un error de Ubuntu con apparmor ( https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/970366 ), cambié apparmor del modo de imposición al modo de queja:

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

Pero no sirvió de nada. Todavía no puedo iniciar mysql.

También pensé que el problema podría deberse a que los archivos de registro de InnoDB tenían un tamaño diferente al que mysql esperaba. He quitado los archivos de registro InnoDB antes de reiniciar usando: sudo mv /var/lib/mysql/ib_logfile* /tmp. Sin embargo, no hubo suerte.

Solución alternativa: reinstalé 12.04, me aseguré de no tocar /etc/mysql/my.cnfde ninguna manera. Mysql está funcionando para que pueda seguir con lo que necesito hacer. Pero tendré que editarlo en algún momento: espero haber encontrado una solución, o esta pregunta habrá sido respondida en ese momento ...

Respuestas:


29

Finalmente descubrí el problema. Básicamente, la definición de algunos parámetros se ha eliminado de la versión anterior de mysql y se ha reemplazado con diferentes nombres. Para solucionarlo, en /etc/mysql/my.cnf, reemplace:

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

con:

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

Este es el informe de error asociado al launchpad: https://bugs.launchpad.net/ubuntu/+source/mysql-5.5/+bug/958120 .

O ejecutar fácilmente:

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

Pero asegúrese de que no haya instalada una instalación antigua de la versión mysql, si la hubo, elimine:

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

No tuve este problema, pero dpkg-reconfigure mysql-server-5.5solucioné lo que estaba mal en mi configuración.
David Purdue

en mi caso, el problema resultó ser un nombre de propiedad mal escrito en /etc/mysql/my.cnf.... Desde este blog: dangtrinh.com/2014/05/… , ejecute mysqld -v. Intenté googlear el código de salida 7 de MySQL, sin éxito. Mi conjetura es que el código de salida 7 tiene que ver con fallas para analizar el archivo de configuración mysql.
MaasSql

Tuve este mismo problema, pero me resultó difícil de rastrear porque mi configuración defectuosa estaba en /etc/mysql/conf.d/* y también porque había registros antiguos llamados /var/log/mysql.* que me hicieron no notar el registros activos / var / log / mysql / *.
Dave Burt

1
Nota al margen: utf8_unicode_cies mejor. Ahora inclusoutf8mb4_unicode_ci
Akshay

10

Innodb tiene una configuración predeterminada (innodb_buffer_pool_size) que está configurada en 128M; esto puede ser demasiado grande para su servidor (especialmente si está utilizando un pequeño Amazon EC2 AMI, que era) La solución que funcionó para mí fue agregar lo siguiente línea a /etc/mysql/my.cnf

innodb_buffer_pool_size = 16M

Escribí sobre esta solución aquí http://www.mlynn.org/2012/07/mysql-5-5-on-ubuntu-12-04-job-failed-to-start


Resulta que mi VM simplemente se estaba quedando sin memoria. Establecer un nivel innodb_buffer_pool_sizemás bajo era una parte de la solución, pero tenga cuidado porque podría quedarse sin memoria.
thaddeusmt

10

Tuve un problema similar. Fue frustrante porque no pude ver ningún registro de errores que indicara cuál era el problema.

En mi caso, el valor que había establecido para innodb_buffer_pool_size era demasiado grande para la memoria del servidor.

Descubrí esto ejecutando mysqld directamente como usuario de mysql.

# su mysql
# mysqld

De esta manera, realmente ve la salida del error.


2
Este es un gran consejo, había estado luchando para obtener información de depuración significativa de mysql. ¡Gracias!
eageranalyst

3

También tuve un problema similar. Los siguientes elementos dicen que se han eliminado del servidor mysql 5.5.
Si los tienes en tu my.cnf, no comenzará. Comenta con ellos #.
(Información derivada de: http://dev.mysql.com/doc/refman/5.5/en/replication-options-slave.html )

Las opciones afectadas se muestran en esta lista:

 --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

¡Perfecto! Exactamente lo que me estaba desanimando. Gracias.
Jim W.

3

Parece reducirse a errores en la configuración de MySQL, ubicada en /etc/mysql/my.cnfy archivos en /etc/mysql/conf.d/.

En mi caso, era un bind-addressvalor incorrecto , porque la dirección IP de mi máquina había cambiado y MySQL ya no podía vincularse. Siéntase libre de leer más sobre esto en este artículo del blog .


2

Una buena forma de depurar las fallas en el proceso posterior al inicio ( /etc/init/mysql.conf) es verificar los registros de inicio :

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

Eso me dio un error de socket:

error: 'No se puede conectar al servidor MySQL local a través del socket

En mi caso, fue causado por una userconfiguración faltante en el [mysqld]grupo enmy.cnf


1

Cuando tuve un error similar de MySQL ("No se pudo iniciar el trabajo") después de actualizar de 11.10 a 12.04, comente # 27 en https://bugs.launchpad.net/ubuntu/+source/mysql-dfsg-5.1/+bug/ 573318? Comments = todo funcionó perfectamente para mí. Citar:

El problema para mí fue que el archivo /etc/apparmor.d/local/usr.sbin.mysqld no existía después de la actualización. Copié manualmente uno de uno de los vacíos (es decir, solo tenía un comentario de encabezado) y luego todo estaba listo.


1

Para mí, la solución fue eliminar la línea ...

set-variable = max_connections=200

... que es la sintaxis de MySQL 3.x y debe cambiarse a

max_connections=200

1

Tuve el mismo problema. Resultó ser las réplicas de esclavo maestro de mysql my.cnf. Revisa tu /var/log/mysql/error.log.

Espero que sea un poco de ayuda. Verifique la configuración de mysql primero antes de perder dos horas con apparmor, que funciona bien.


1

Tuve los mismos problemas, para mí bind-addressse configuró incorrectamente en mi /etc/mysql/my.cnfarchivo. Por lo tanto, parece que cualquier cosa que no esté bien en my.cnf puede causar este problema. No he encontrado nada en los registros que indiquen esto como el problema.


1

¡Mi problema era el 0% de espacio libre! Doble verificación :-)


1

Verifica los /tmppermisos. Tuve este problema, después de muchas veces googlear y reiniciar, descubrí que los /tmppermisos eran 755.

Lo cambio a 777 y mysqlempiezo bien.


esta cosa en la antigua, pero esta era mi problema .... No sé cómo ha cambiado ...
TheHidden

en algunos casos, cambiando el sistema de archivos o montando la /tmpnueva partición.
shgnInc

1

Después de una actualización automática de mysqld-5.5.53 ubuntu 14.04.1, mysql no se iniciará. Estas líneas aparecieron en mi 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

El problema se resolvió creando este directorio:

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

Acabo de actualizar la versión de MySQL y AppArmor como se sugiere aquí para solucionar este problema en Ubuntu 12.04 que se ejecuta en la instancia de Amazon ec2. Todavía recibo el error algunas veces, pero MySQL se reinicia automáticamente.


1
Bienvenido a Ask Ubuntu! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Ringtail

0

Tenía los mismos mensajes de error, pero la causa era diferente. Mis tablas InnoDB estaban corruptas, porque todo el sistema de archivos entró en modo de solo lectura. Arreglé la corrupción agregando la siguiente línea a /etc/mysql/my.cf

innodb_force_recovery = 1

Empecé MySQL:

sudo service mysql start

MySQL se inició y volqué / exporté todas las tablas. Cambié innodb_force_recovery a 0 (= predeterminado) y reinicié MySQL:

sudo service mysql restart

Estoy usando Ubuntu 12.04 con MySQL 5.5. Me llevó mucho tiempo encontrar el problema y espero poder ayudar a alguien con esta respuesta. Ver también http://dev.mysql.com/doc/refman/5.5/en/forcing-innodb-recovery.html


0

En mi caso, el problema era el /etc/mysql/my.cnfpermiso de archivo.

Lo cambié por conveniencia pero causó errores como

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"

El my.cnfpermiso era 766 y lo cambié a 744 y dos de los tres errores desaparecieron. Todavía hay un mensaje de error similar pero no impidió que mysql se iniciara.

Espero que esto ayude...


0

En mi caso, tuve una bind-addressdeclaración incorrecta . Corrí ifconfigpara descubrir la dirección IP privada del EC2 y la actualicé en el /etc/mysql/my.cnfarchivo.


0

En mi caso, encontré un problema de permiso en / tmp. Acabo de configurar el permiso de directorio de tmp en 766 y reiniciar el servicio mysql. Arreglado

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.