sql >> Databasteknik >  >> RDS >> Mysql

mysql Allvarligt fel:kan inte allokera minne för buffertpoolen

TLDR;

Mysql kan inte starta om eftersom det är slut på minne, kontrollera att du har en lämplig swapfil konfigurerad.

Hjälpte det inte? Om det inte är ditt problem, är mer kvalificerade frågor för att fortsätta forskningen:

Bakgrund

Jag hade exakt det här problemet på det allra första systemet jag satte upp på EC2, kännetecknat av att wordpress-sidan som hölls där gick ner ibland med "Fel vid upprättande av databasanslutning".

Loggarna visade samma fel som OP postade. Min läsning av felet (tidsstämplar borttagna) är:

  • Fel utan minne: InnoDB: Fatal error: cannot allocate memory for the buffer pool
  • InnoDB kan inte starta utan tillräckligt med minne [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 stängs av, vilket i det här sammanhanget verkligen betyder att man misslyckas med att starta om! [Note] /usr/sbin/mysqld: Shutdown complete

Kontrollerar /var/log/syslog och söker efter mysql ger:

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>

Obs:du kan behöva gunzip och söka igenom arkiverade loggar om felet inträffade innan loggarna roterades med cron.

Lösning

I mitt fall var det underliggande problemet att jag hade försummat att konfigurera en swapfil.

Du kan kontrollera om du har en konfigurerad genom att köra free -m .

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

I exemplet ovan anger Swap:0 ingen swapfil.

Handledningar om hur du ställer in en:

Observera att större inte nödvändigtvis är bättre! Från Ubuntu-guiden :

Angående de andra svaren här...

The InnoDB memory heap is disabled

Tack vare:Ruben Schade kommentar

[Note] Plugin 'FEDERATED' is disabled.

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



  1. MySQL-anslutare och licensiering

  2. Topp 9 databashanteringssystem för Joomlas mallar

  3. Läs en kolumn från en rad från en MySQL-databas

  4. Hur man konverterar en sträng till hexadecimal i MySQL – HEX()