Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Erro fatal do mysql:não é possível alocar memória para o pool de buffers

TLDR;


O MySQL não pode reiniciar porque está sem memória, verifique se você tem um arquivo de troca apropriado configurado.

Não ajudou? Se esse não for o seu problema, perguntas mais qualificadas para continuar a pesquisa são:

Plano de fundo


Eu tive exatamente esse problema no primeiro sistema que configurei no EC2, caracterizado pelo site wordpress hospedado lá cair de vez em quando com "Erro ao estabelecer conexão com o banco de dados".

Os logs mostraram o mesmo erro que o OP postou. Minha leitura do erro (timestamps removidos) é:
  • Erro de falta de memória: InnoDB: Fatal error: cannot allocate memory for the buffer pool
  • O InnoDB não pode iniciar sem memória suficiente [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á sendo encerrado, o que neste contexto, realmente significa falha ao reiniciar! [Note] /usr/sbin/mysqld: Shutdown complete

Verificando /var/log/syslog e procurando por mysql rendimentos:
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:você pode ter que fazer gunzip e pesquisar nos logs arquivados se o erro ocorreu antes que os logs fossem girados pelo cron.

Solução


No meu caso, o problema subjacente foi que eu deixei de configurar um arquivo de troca.

Você pode verificar se tem um configurado executando free -m .

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

No exemplo acima, Swap:0 indica que não há swapfile.

Tutoriais sobre como configurar um:

Observe que maior não é necessariamente melhor! Do guia do Ubuntu :

Em relação às outras respostas aqui...

The InnoDB memory heap is disabled


Obrigado a:Comentário Ruben Schade

[Note] Plugin 'FEDERATED' is disabled.


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