Mysql
 sql >> Base de données >  >> RDS >> Mysql

mysql Erreur fatale :impossible d'allouer de la mémoire pour le pool de mémoire tampon

TLDR ;

Mysql ne peut pas redémarrer car il manque de mémoire, vérifiez que vous avez configuré un fichier d'échange approprié.

Cela n'a pas aidé ? Si ce n'est pas votre problème, des questions plus qualifiées pour continuer la recherche sont :

Contexte

J'ai eu exactement ce problème sur le tout premier système que j'ai mis en place sur EC2, caractérisé par le site wordpress hébergé là-bas tombant occasionnellement avec "Erreur lors de l'établissement de la connexion à la base de données".

Les journaux ont montré la même erreur que celle publiée par l'OP. Ma lecture de l'erreur (horodatages supprimés) est :

  • Erreur de mémoire insuffisante : InnoDB: Fatal error: cannot allocate memory for the buffer pool
  • InnoDB ne peut pas démarrer sans suffisamment de mémoire [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 est en train de s'arrêter, ce qui, dans ce contexte, signifie en fait qu'il ne redémarre pas ! [Note] /usr/sbin/mysqld: Shutdown complete

Vérification de /var/log/syslog et en cherchant mysql donne :

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>

Remarque :vous devrez peut-être compresser et rechercher dans les journaux archivés si l'erreur s'est produite avant la rotation des journaux par cron.

Solution

Dans mon cas, le problème sous-jacent était que j'avais négligé de configurer un fichier d'échange.

Vous pouvez vérifier si vous en avez un configuré en exécutant free -m .

total used free shared buffers cached Mem: 604340 587364 16976 0 29260 72280 -/+ buffers/cache: 485824 118516 Swap: 0 0 0

Dans l'exemple ci-dessus, Swap :0 indique qu'il n'y a pas de fichier d'échange.

Tutoriels pour en configurer un :

Notez que plus gros n'est pas nécessairement meilleur ! Depuis le guide Ubuntu :

Concernant les autres réponses ici...

The InnoDB memory heap is disabled

Merci à :Commentaire de Ruben Schade

[Note] Plugin 'FEDERATED' is disabled.

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