Mysql
 sql >> Database >  >> RDS >> Mysql

mysql Errore irreversibile:impossibile allocare memoria per il pool di buffer

TLDR;

Mysql non può riavviarsi perché ha esaurito la memoria, controlla di avere un file di scambio appropriato configurato.

Non è stato d'aiuto? Se questo non è il tuo problema, le domande più qualificate per continuare la ricerca sono:

Sfondo

Ho riscontrato esattamente questo problema sul primo sistema che ho installato su EC2, caratterizzato dal fatto che il sito wordpress ospitato lì si bloccava a volte con "Errore durante la connessione al database".

I registri hanno mostrato lo stesso errore pubblicato dall'OP. La mia lettura dell'errore (timestamp rimosse) è:

  • Errore di memoria insufficiente: InnoDB: Fatal error: cannot allocate memory for the buffer pool
  • Impossibile avviare InnoDB senza memoria sufficiente [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 si sta spegnendo, il che in questo contesto significa davvero non riavviare! [Note] /usr/sbin/mysqld: Shutdown complete

Controllo /var/log/syslog e cercando mysql rendimenti:

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:potrebbe essere necessario eseguire il gunzip e la ricerca nei log archiviati se l'errore si è verificato prima che i log venissero ruotati da cron.

Soluzione

Nel mio caso il problema di fondo era che avevo trascurato di configurare un file di scambio.

Puoi verificare se ne hai uno configurato eseguendo free -m .

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

Nell'esempio sopra, Swap:0 indica nessun file di scambio.

Tutorial per configurarne uno:

Nota che più grande non è necessariamente migliore! Dalla guida Ubuntu :

Per quanto riguarda le altre risposte qui...

The InnoDB memory heap is disabled

Grazie a:Commento di Ruben Schade

[Note] Plugin 'FEDERATED' is disabled.

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