sql >> Base de Datos >  >> RDS >> Mysql

Error grave de mysql:no se puede asignar memoria para el grupo de búfer

TLDR;

Mysql no puede reiniciarse porque no tiene memoria, verifique que tenga configurado un archivo de intercambio apropiado.

¿No ayudó? Si ese no es su problema, las preguntas más cualificadas para continuar con la investigación son:

Antecedentes

Tuve exactamente este problema en el primer sistema que configuré en EC2, que se caracterizaba por que el sitio de wordpress alojado allí fallaba en ocasiones con "Error al establecer la conexión de la base de datos".

Los registros mostraron el mismo error que publicó el OP. Mi lectura del error (marcas de tiempo eliminadas) es:

  • Error de falta de memoria: 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
  • mysqld se está cerrando, lo que en este contexto, ¡realmente significa que no se pudo reiniciar! [Note] /usr/sbin/mysqld: Shutdown complete

Comprobando /var/log/syslog y buscando mysql rendimientos:

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 deba usar gunzip y buscar en los registros archivados si el error ocurrió antes de que cron rotara los registros.

Solución

En mi caso, el problema subyacente fue que me olvidé de configurar un archivo de intercambio.

Puede verificar si tiene uno configurado 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, Intercambio:0 indica que no hay archivo de intercambio.

Tutoriales sobre cómo configurar uno:

¡Tenga en cuenta que más grande no es necesariamente mejor! De la guía de Ubuntu :

Con respecto a las otras respuestas aquí...

The InnoDB memory heap is disabled

Gracias a:Comentario de Rubén Schade

[Note] Plugin 'FEDERATED' is disabled.

Ver:https://stackoverflow.com/a/16470822/2586761