Mysql
 sql >> Datenbank >  >> RDS >> Mysql

mysql Schwerwiegender Fehler:Speicher für den Pufferpool kann nicht zugewiesen werden

TLDR;

MySQL kann nicht neu gestartet werden, da nicht genügend Speicher vorhanden ist. Überprüfen Sie, ob Sie eine geeignete Auslagerungsdatei konfiguriert haben.

Hat nicht geholfen? Wenn das nicht Ihr Problem ist, sind qualifiziertere Fragen zur Fortsetzung der Recherche:

Hintergrund

Ich hatte genau dieses Problem auf dem allerersten System, das ich auf EC2 eingerichtet habe, gekennzeichnet durch die dort gehostete WordPress-Site, die gelegentlich mit "Fehler beim Herstellen der Datenbankverbindung" abstürzte.

Die Protokolle zeigten den gleichen Fehler, den das OP gepostet hat. Mein Messwert des Fehlers (Zeitstempel entfernt) lautet:

  • Nicht genügend Arbeitsspeicherfehler: InnoDB: Fatal error: cannot allocate memory for the buffer pool
  • InnoDB kann ohne genügend Arbeitsspeicher nicht gestartet werden [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 wird heruntergefahren, was in diesem Zusammenhang wirklich bedeutet, dass der Neustart fehlschlägt! [Note] /usr/sbin/mysqld: Shutdown complete

Prüfen von /var/log/syslog und nach mysql suchen ergibt:

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>

Hinweis:Möglicherweise müssen Sie archivierte Protokolle komprimieren und durchsuchen, wenn der Fehler aufgetreten ist, bevor die Protokolle von cron rotiert wurden.

Lösung

In meinem Fall war das zugrunde liegende Problem, dass ich es versäumt hatte, eine Auslagerungsdatei zu konfigurieren.

Sie können überprüfen, ob Sie eines konfiguriert haben, indem Sie free -m ausführen .

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

Im obigen Beispiel bedeutet Swap:0 keine Auslagerungsdatei.

Tutorials zum Einrichten:

Beachten Sie, dass größer nicht unbedingt besser ist! Aus dem Ubuntu-Leitfaden :

In Bezug auf die anderen Antworten hier...

The InnoDB memory heap is disabled

Danke an:Ruben Schade Kommentar

[Note] Plugin 'FEDERATED' is disabled.

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