Como faço para evitar travar minha micro instância ec2 mysql db?

1

Eu tenho uma micro instância do Amazon ec2 que contém um site WordPress. Desde ontem, meu mysql db continua falhando dizendo:

[ec2-user@ip-xxx-xx-xx-xxx ~]$ sudo service mysqld status
mysqld dead but subsys locked

Eu tentei reiniciar o mysqld, mas a cada 5 minutos ele fica travando com a mesma mensagem - "Erro ao estabelecer uma conexão com o banco de dados"

Isto é o que meu arquivo de log do banco de dados lê -

160123 05:44:41 mysqld_safe mysqld restarted
160123  5:44:43 [Note] /usr/libexec/mysql55/mysqld (mysqld 5.5.46) starting as process 7928 ...
160123  5:44:44 [Note] Plugin 'FEDERATED' is disabled.
160123  5:44:46 InnoDB: The InnoDB memory heap is disabled
160123  5:44:46 InnoDB: Mutexes and rw_locks use GCC atomic builtins
160123  5:44:46 InnoDB: Compressed tables use zlib 1.2.8
160123  5:44:46 InnoDB: Using Linux native AIO
160123  5:44:46 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
160123  5:44:46 InnoDB: Completed initialization of buffer pool
160123  5:44:46 InnoDB: Fatal error: cannot allocate memory for the buffer pool
160123  5:44:46 [ERROR] Plugin 'InnoDB' init function returned error.
160123  5:44:46 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160123  5:44:46 [ERROR] Unknown/unsupported storage engine: InnoDB
160123  5:44:46 [ERROR] Aborting    
160123  5:44:46 [Note] /usr/libexec/mysql55/mysqld: Shutdown complete
160123 05:44:46 mysqld_safe mysqld from pid file /var/run/mysqld/mysqld.pid ended

A solução comum encontrada quando pesquisei uma solução para o problema - mysqld dead but subsys locked , é criar um arquivo de swap. Fiz exatamente o que a maioria da solução sugere, mas como não sou bem versado em UNIX, não sei o que fiz está certo ou não.

Como perguntado por Wounter, atualizando minha pergunta com os resultados de free . Eu tenho um espaço de troca de 1MB.

[ec2-user@ip-xx-xx-xx-xxx /]$ free
             total       used       free     shared    buffers     cached
Mem:       1019452     613820     405632         76      19124      64348
-/+ buffers/cache:     530348     489104
Swap:      1048572      46604    1001968

Ou existe outra solução para esse problema? Por favor, ajude.

    
por Arun 23.01.2016 / 18:48

1 resposta

1

Para maior clareza, a mensagem mysqld dead but subsys locked é um sintoma , não uma causa . Isto é, significa que o mysqld travou ("dead"), e o banco de dados de estado do sistema init possui informações desatualizadas ("mas subsys bloqueadas"). Não lhe diz porque as coisas falharam.

O problema é explicado no seu log do servidor mysql:

160123  5:44:46 InnoDB: Initializing buffer pool, size = 128.0M
InnoDB: mmap(137363456 bytes) failed; errno 12
160123  5:44:46 InnoDB: Completed initialization of buffer pool
160123  5:44:46 InnoDB: Fatal error: cannot allocate memory for the buffer pool
160123  5:44:46 [ERROR] Plugin 'InnoDB' init function returned error.
160123  5:44:46 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
160123  5:44:46 [ERROR] Unknown/unsupported storage engine: InnoDB
160123  5:44:46 [ERROR] Aborting    

Isso diz que quando o InnoDB (o mecanismo de armazenamento) tenta inicializar, ele quer alocar 128M de RAM para uma região mmap() ed, mas isso falha.

Você afirma que adicionou espaço de troca. Esta deve ser a solução correta dada a mensagem de erro, mas aparentemente não funcionou; provavelmente porque você não adicionou espaço de troca suficiente.

Tente aumentar o tamanho do seu espaço de troca. Se isso não resolver, execute free e atualize sua pergunta para publicar a saída desse comando.

    
por 23.01.2016 / 19:24