¿Por qué falló la instalación de MySQL 5.6 en Ubuntu 14.04?

30

Quería echar un vistazo a MySQL 5.6 en Ubuntu 14.04 solo por curiosidad. Y según este artículo , ciertamente parecía que la instalación debería ser simple y directa. Así que encendí un micro servidor AWS EC2 que ejecuta Ubuntu 14.04 (64 bits), inicié sesión en mi instancia original (a través de PuTTY) y emití los siguientes comandos:

$ sudo apt-get update
$ sudo apt-get build-dep mysql-server-5.6
$ sudo apt-get install mysql-server-5.6

(Los primeros dos comandos fueron movimientos de desesperación, ya que simplemente correr apt-get installsolo no había funcionado previamente. Pero incluso con los tres comandos, el paso de instalación aún no funcionó).

En el punto en el que esperaba, según el artículo mencionado anteriormente, ver esta salida del comando final:

mysql start/running, process 2355  
Setting up libhtml-template-perl (2.95-1) ...  
Setting up mysql-common-5.6 (5.6.16-1~exp1) ...  
Processing triggers for libc-bin (2.19-0ubuntu6) ...  
Processing triggers for ureadahead (0.100.0-16) ...  

Tengo esto en su lugar:

start: Job failed to start  
invoke-rc.d: initscript mysql, action "start" failed.  
dpkg: error processing package mysql-server-5.6 (--configure):  
 subprocess installed post-installation script returned error exit status 1  
Setting up libhtml-template-perl (2.95-1) ...  
Setting up mysql-common-5.6 (5.6.16-1~exp1) ...  
Processing triggers for libc-bin (2.19-0ubuntu6) ...  
Processing triggers for ureadahead (0.100.0-16) ...  
Errors were encountered while processing:  
 mysql-server-5.6  
E: Sub-process /usr/bin/dpkg returned an error code (1)

¿Alguien puede ver lo que salió mal?

WebLearner
fuente
1
¿Qué dice el registro? cat /var/log/mysql.err
Paté

Respuestas:

22

El problema que tiene tiene el mismo aspecto que este informe de error . El error al iniciar parece deberse a que la configuración predeterminada de MySQL 5.6 requiere más memoria de la que puede obtener en su microinstancia.

La solución al error parece ser una de las siguientes:

  • Aumente la cantidad de memoria en su instancia EC2
  • Establecer un valor menor para la max_connectionsvariable de MySQL
Mike Miller
fuente
1
Sí, este problema es EXACTAMENTE el error que se muestra en ese informe de error. ¡Gracias! Hasta ahora probé la solución rápida sugerida, que era asegurar que /etc/apparmor.d/local/usr.sbin.mysqld existiera, y desafortunadamente eso no lo hizo. Así que ahora intentaré una instalación con más memoria.
WebLearner
1
Para el próximo intento, en lugar de usar una instancia EC2, creé una máquina virtual Ubuntu 14.04 con 2GB de memoria usando Oracle VM Virtualbox, y en este entorno, la instalación de MySQL 5.6 pasó sin problemas sudo apt-get install mysql-server-5.6. Por lo tanto, parece que una micro instancia EC2 no tiene suficiente memoria para instalar MySQL 5.6 usando apt-get.
WebLearner
1
Se agregó un comentario adicional al informe de error que sugería reducir las conexiones_máx máximas de MySQL antes de instalar MySQL 5.6. Tomé ese consejo y agregué un archivo .cnf a /etc/mysql/conf.d que contenía dos líneas: "[mysqld]" y "max_ connections = 20". Con ese archivo en su lugar, mi instalación de MySQL en un nuevo micro EC2 navegó. (De acuerdo con la documentación que el valor predeterminado para max_connections es 151. Si se establece en 20 es probablemente extremo, pero al menos se nota que es posible obtener MySQL a instalar..)
WebLearner
Para obtener información adicional: verifico /var/lib/dpkg/info/mysql-server-5.6.postinst y descubrí que puede ejecutar ese script para reproducir los pasos exactos que fallan
shakaran
Está funcionando en mi vagabundo, configuré la RAM 1G y la arreglé. gracias. : D
Chu-Siang Lai
24

He encontrado el mismo problema cuando inicio mi pequeño VPS. El problema es causado por poca memoria. Entonces, sin gastar dinero extra para aumentar la memoria que no necesitaba, simplemente podría crear archivos de intercambio para ayudar a la instalación. Sí, el intercambio es lento, pero todo lo que necesita es realizar la instalación.

En Ubuntu 14.04, hago lo siguiente para resolver el problema:

Cree un archivo de intercambio 4G:

sudo fallocate -l 4G /swapfile

Cambie su permiso a solo root podría acceder y cambiar:

sudo chmod 600 /swapfile

Hazlo intercambiar:

sudo mkswap /swapfile

Activar:

sudo swapon /swapfile

Ahora puede intentar instalar mysql nuevamente, esta vez debería tener éxito. Solo recuerde eliminar la instalación fallida anterior antes de hacerlo.

Arthur Wang
fuente
Sí, respuesta perfecta. Absolutamente asombroso.
Wren
3

Me he encontrado con el mismo problema. Aunque tenía la memoria lo suficientemente grande de 12 Gb dada a mi VM, pero aún así las cosas fallaban como en cuestión. Después de pasar algún tiempo descubrí que a apt get predeterminado le faltaban algunos de los paquetes de traducción de configuración y traducción de herramientas.

El repositorio apto de MySQL proporciona una manera simple y conveniente de instalar y actualizar productos MySQL con los últimos paquetes de software que utilizan apt-get. Esto es lo que debes seguir:

  1. Agregar el repositorio APT de MySQL Primero, agregue el repositorio apto de MySQL a la lista de repositorios de software de su sistema. Sigue estos pasos:

    • Vaya a la página de descarga del repositorio apto de MySQL en http://dev.mysql.com/downloads/repo/apt/ .

    • Seleccione y descargue el paquete de lanzamiento.

    • Instale el paquete de lanzamiento descargado con el siguiente comando, reemplazando el nombre del paquete específico de la versión con el nombre del paquete descargado (precedido por su ruta, si no está ejecutando el comando dentro de la carpeta donde está el paquete):

      sudo dpkg -i /PATH/version-specific-package-name.deb
      

    Tenga en cuenta que el mismo paquete funciona en todas las plataformas Debian y Ubuntu compatibles.

    • Durante la instalación del paquete, se le pedirá que elija las versiones del servidor MySQL y otros componentes (por ejemplo, MySQL Workbench) que desea instalar. Si no está seguro de qué versión elegir, no cambie las opciones predeterminadas seleccionadas para usted. También puede elegir ninguno si no desea que se instale un componente en particular. Después de hacer las elecciones para todos los componentes, elija Aceptar para finalizar la configuración e instalación del paquete de lanzamiento.

    siempre puede cambiar sus elecciones para las versiones posteriores;
    consulte Selección de una versión de lanzamiento principal para obtener instrucciones.

    • Actualice la información del paquete desde el repositorio APT de MySQL con el siguiente comando (este paso es obligatorio):

      sudo apt-get update
      
  2. Instalar MySQL con APT

    • Instala MySQL con el siguiente comando:

      sudo apt-get install mysql-server
      

Esto instala el paquete para el servidor MySQL, así como los paquetes para el cliente y para los archivos comunes de la base de datos.

Durante la instalación, hay dos solicitudes de los cuadros de diálogo: Proporcione una contraseña para el usuario raíz para su instalación de MySQL.

  1. Inicio y detención del servidor MySQL

El servidor MySQL se inicia automáticamente después de la instalación. - Puede verificar el estado del servidor MySQL con el siguiente comando:

sudo service mysql status
  • Detenga el servidor MySQL con el siguiente comando:

    sudo service mysql stop
    
  • Para reiniciar el servidor MySQL, use el siguiente comando:

    sudo service mysql start
    

Seguí este http://dev.mysql.com/doc/mysql-apt-repo-quick-guide/en/#apt-repo-fresh-install . Esto funcionó sin problemas y descargó todos los paquetes y se instaló con éxito mysql 5.6.

Ritesh
fuente
Gracias david Esto tiene sentido. He cambiado la respuesta a pasos más detallados. Gracias.
Ritesh
+1 para la respuesta mejorada.
David Foerster
el último fui yo ... ¿soy realmente yo? :)
rápido
2

En mi caso he agregado

innodb_buffer_pool_size = 20M

al /etc/mysql/my.cnf

maxkoryukov
fuente
1
El usuario tiene problemas para instalar MySQL, no para usarlo.
Gracias, he leído la pregunta) Tengo el mismo problema durante la instalación. En realidad, la instalación finalizó y mysql ya es accesible como servicio, y podríamos ejecutarlo. Pero en el último paso del proceso de instalación (comenzando mysqld) detectamos este molesto error.
maxkoryukov
1

Encontré este problema en Ubuntu 15.10. Para mí no fue un problema de memoria (tengo 2 GB de RAM y 18 GB de intercambio, de los cuales solo se utilizaron unos 300 MB en total).

En mi caso, dpkgestaba buscando /etc/mysql/conf.d, que no existía (¡pero /etc/mysql/mysql.conf.dsí!). Reinstalar mysql y crear manualmente la carpeta /etc/mysql/conf.dresolvió mi problema.

¿Cómo sucedió esto exactamente? No tengo idea. Casi no quería compartir mi respuesta, ya que apuesto a que esta solución es específica para mi computadora.

Resolví este problema usando la utilidad strace, que es fantástica para este tipo de cosas, aunque increíblemente detallada.

Lo usé así:

  • Después de presionar ctrlchasta la mitad apt-get install mysql-server, tuve que correr dpkg --configure -apara terminar la instalación.

  • Me encontré strace 2>/tmp/trace dpkg --configure -a. Eso me hizo un buen straceregistro en /tmp/trace.

  • Miré a través del registro, especialmente en la parte inferior, donde falló.

  • Noté que intentó acceder /etc/mysql/conf.d, y obtuve el código de error ENOENT, no existe tal archivo o directorio .

Para cualquiera que quiera probar esto, haga strace 2>/tmp/trace (command)y grep por ENOENT. Como dije, esta solución probablemente sea específica de mi computadora, pero es posible que desee probarla.

chico albaricoque
fuente
0

En mi caso, todo lo que tenía que hacer era hacer algunos cambios my.cnfy simplemente eliminar 2 archivos de registro con el nombre ib_logfile0y ib_logfile1, y comenzar mysql

service mysql start

No es necesario reinstalar mysql, simplemente elimine estos 2 archivos de registro y reinicie el servidor mysql

A continuación los cambios que hice en my.cnf:

max_connections     = 1000     
max_allowed_packet  = 1024M
wait_timeout        = 7200 
Lavina Chitara
fuente
Agregue un poco más a su respuesta para que otros puedan seguirla.
George Udosen