mysql - linea - algo está equivocado en su sintax cerca type innodb auto_increment 1
mysql Error grave: no se puede asignar memoria para el grupo de búferes (3)
TLDR;
Mysql no se puede reiniciar porque no hay memoria, verifique que tenga configurado un archivo de intercambio apropiado.
No ayuda Si ese no es tu problema, las preguntas más calificadas para continuar la investigación son:
- El servicio mysqld se detiene una vez al día en el servidor ec2
- https://askubuntu.com/questions/422037/optimising-mysql-settings-mysqld-running-out-of-memory
Fondo
Tuve exactamente este problema en el primer sistema que configuré en EC2, caracterizado por el sitio de WordPress alojado allí y en ocasiones con "Error al establecer conexión con la base de datos".
Los registros mostraron el mismo error que el OP publicado. Mi lectura del error (marcas de tiempo eliminadas) es:
- Error de memoria insuficiente:
InnoDB: Fatal error: cannot allocate memory for the buffer pool
- InnoDB no puede iniciarse sin suficiente memoria
[ERROR] Plugin ''InnoDB'' init function returned error. [ERROR] Plugin ''InnoDB'' registration as a STORAGE ENGINE failed. [ERROR] Unknown/unsupported storage engine: InnoDB [ERROR] Aborting
[ERROR] Plugin ''InnoDB'' init function returned error. [ERROR] Plugin ''InnoDB'' registration as a STORAGE ENGINE failed. [ERROR] Unknown/unsupported storage engine: InnoDB [ERROR] Aborting
- mysqld se está cerrando, lo que en este contexto, realmente significa que no se puede reiniciar.
[Note] /usr/sbin/mysqld: Shutdown complete
Verificando /var/log/syslog
y buscando rendimientos de mysql :
Out of memory: Kill process 15452 (mysqld) score 93 or sacrifice child
Killed process 15452 (mysqld) total-vm:888672kB, anon-rss:56252kB, file-rss:0kB
init: mysql main process (15452) killed by KILL signal
init: mysql main process ended, respawning
type=1400 audit(1443812767.391:30): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=21984 comm="apparmor_parser"
init: mysql main process (21996) terminated with status 1
init: mysql main process ended, respawning
init: mysql post-start process (21997) terminated with status 1
<repeated>
Nota: es posible que tenga que iniciar Gunzip y buscar en los registros archivados si el error ocurrió antes de que los registros fueran rotados por cron.
Solución
En mi caso, el problema subyacente era que había olvidado configurar un archivo de intercambio.
Puede verificar si tiene una configurada ejecutando free -m
.
total used free shared buffers cached Mem: 604340 587364 16976 0 29260 72280 -/+ buffers/cache: 485824 118516 Swap: 0 0 0
En el ejemplo anterior, Swap: 0 indica que no hay swapfile.
Tutoriales para configurar uno:
- https://www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04
- https://help.ubuntu.com/community/SwapFaq
Tenga en cuenta que más grande no es necesariamente mejor! De la https://help.ubuntu.com/community/SwapFaq :
El "rendimiento decreciente" significa que si necesita más espacio de intercambio que el doble de su tamaño de RAM , es mejor que agregue más RAM, ya que el acceso a la unidad de disco duro (HDD) es aproximadamente 10³ más lento que el acceso a la RAM, por lo que algo tomaría 1 segundo. De repente toma más de 15 minutos ! Y aún más de un minuto en una unidad de estado sólido (SSD) rápida ...
En cuanto a las otras respuestas aquí ...
The InnoDB memory heap is disabled
Esto no es realmente un error, solo una indicación de que InnoDB está usando el asignador de memoria interna del sistema en lugar del suyo propio. El valor predeterminado es sí / 1, y es aceptable para la producción.
De acuerdo con los documentos, este comando está en desuso y se eliminará en las versiones de MySQL por encima de 5.6 (y asumo MariaDB):
http://dev.mysql.com/doc/refman/5.6/en/innodb-performance-use_sys_malloc.html
Gracias a: Ruben Schade comentario
[Note] Plugin ''FEDERATED'' is disabled.
El mensaje sobre FEDERATED inhabilitado no es un error. Simplemente significaba que el motor FEDERATED no está ENCENDIDO para su servidor mysql. No se utiliza por defecto. Si no lo necesitas, no te importa este mensaje.
Consulte: https://stackoverflow.com/a/16470822/2586761
Tengo este registro de errores de MySQL, ¿alguna idea? El sitio web funciona durante un tiempo y luego cierro por completo MySQL después de un par de horas.
140919 10:48:27 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
140919 10:48:27 [Note] Plugin ''FEDERATED'' is disabled.
140919 10:48:27 InnoDB: The InnoDB memory heap is disabled
140919 10:48:27 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140919 10:48:27 InnoDB: Compressed tables use zlib 1.2.3.4
140919 10:48:28 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
140919 10:48:28 InnoDB: Completed initialization of buffer pool
140919 10:48:28 InnoDB: Fatal error: cannot allocate memory for the buffer pool
140919 10:48:28 [ERROR] Plugin ''InnoDB'' init function returned error.
140919 10:48:28 [ERROR] Plugin ''InnoDB'' registration as a STORAGE ENGINE failed.
140919 10:48:28 [ERROR] Unknown/unsupported storage engine: InnoDB
140919 10:48:28 [ERROR] Aborting
140919 10:48:28 [Note] /usr/sbin/mysqld: Shutdown complete
140919 10:48:28 [Warning] Using unique option prefix myisam-recover instead of myisam-recover-options is deprecated and will be removed in a future release. Please use the full name instead.
140919 10:48:28 [Note] Plugin ''FEDERATED'' is disabled.
140919 10:48:28 InnoDB: The InnoDB memory heap is disabled
140919 10:48:28 InnoDB: Mutexes and rw_locks use GCC atomic builtins
140919 10:48:28 InnoDB: Compressed tables use zlib 1.2.3.4
140919 10:48:28 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
140919 10:48:28 InnoDB: Completed initialization of buffer pool
140919 10:48:28 InnoDB: Fatal error: cannot allocate memory for the buffer pool
140919 10:48:28 [ERROR] Plugin ''InnoDB'' init function returned error.
140919 10:48:28 [ERROR] Plugin ''InnoDB'' registration as a STORAGE ENGINE failed.
140919 10:48:28 [ERROR] Unknown/unsupported storage engine: InnoDB
140919 10:48:28 [ERROR] Aborting
140919 10:48:28 [Note] /usr/sbin/mysqld: Shutdown complete
Encontré que esta respuesta se suma a la discusión: https://www.digitalocean.com/community/questions/mysql-server-keeps-stopping-unexpectedly?answer=26021
En resumen, además de configurar innodb_buffer_pool_size a algo razonable como 64M, es posible que también necesite modificar /etc/apache2/mods-enabled/mpm_prefork.conf para reducir el número de conexiones iniciadas por apache;
<IfModule mpm_prefork_module>
StartServers 3
MinSpareServers 3
MaxSpareServers 5
MaxRequestWorkers 25
MaxConnectionsPerChild 1024
</IfModule>
La solución NO es más espacio, el problema es que el servidor web Apache no es mysql, en realidad necesita reducir innodb-buffer-pool-size
Este búfer es utilizado por el proceso mysql justo después del inicio, por lo que cuando Apache necesita más recursos, el kernel borrará la RAM de los servicios, lo que significa detener mysql en lugar de bloquear el servidor.
También agregaría un CRON para verificar el estado de la base de datos y reiniciarlo si no desea cambiar a ngnx o httplight.