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 :
- le service mysqld s'arrête une fois une journée sur le serveur ec2
- https://askubuntu. com/questions/422037/optimising-mysql-settings-mysqld-running-out-of-memory
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 :
- https:// www.digitalocean.com/community/tutorials/how-to-add-swap-on-ubuntu-14-04
- https://help.ubuntu.com/community/SwapFaq
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