Já temos o banco de dados pendurado duas vezes e tentando encontrar uma causa.
show processlist
Waiting for global read lock | INSERT INTO {myisam_table} ...
Aqui o espaço em disco estava cheio, então pensamos que o problema havia terminado depois de dar um pouco mais, mas no dia seguinte, ao meio-dia, ele travou novamente:
show processlist
Waiting for table level lock | UPDATE {myisam_table} ...
O que poderia estar causando isso?
Mecanismo padrão do Mysql: InnoDB.
O banco de dados possui uma mistura de tabelas com os mecanismos MyISAM e InnoDB.
Log publicado aqui:
http://arturito.net/2013/08/28/mysql-waiting-for-table-level-lock-errors/
mysqldump
. Você estava executando um backup no momento?SHOW FULL PROCESSLIST
vez deSHOW PROCESSLIST
podermos ver a consulta inteira para cada thread ... mas como está agora, se houverMyISAM
tabelas envolvidas, parece que aSELECT
consulta de longa duração em 42686 está bloqueando aUPDATE
consulta em 43506 , que está, por sua vez, bloqueando todas asSELECT
consultas que a seguem.Respostas:
OBSERVAÇÕES INICIAIS
JOIN
,GROUP BY
ouORDER BY
TEORIA DO TRABALHO
Se você ficou sem espaço em disco com a lista de processos que você me forneceu, podemos culpar o mecanismo de armazenamento MyISAM. Por quê?
No seu caso particular, não é uma das suas tabelas. Se a
JOIN
,,GROUP BY
ouORDER BY
estava sendo executado e uma tabela temporária estava sendo gravada no disco (nas tabelas temporárias do disco usam o mecanismo de armazenamento MyISAM), o MySQL simplesmente congela quando está sem espaço. Como eu sei disso?De acordo com o Guia de Estudo de Certificação do MySQL 5.0
A Seção 29.2, boletim 11, diz:
Eu já discuti essa situação antes
Apr 05, 2013
: Servidor MySQL "Site Offline" Falha ao Iniciar e PararDec 17, 2012
: Como resolver o erro 1114 do MySQL "A tabela está cheia" com o Amazon RDS?Apr 25, 2012
: Arquivos de log muito grandesMar 15, 2012
: Por que as tabelas do MySQL falham? Como evito isso?Algo me diz que você tem uma dessas duas situações
/tmp
partição raiz, está ficando sem espaçoSUGESTÕES
Sugestão 1: Mapear tmpdir para outro disco
Sugestão # 2: Crie um disco RAM
Execute esse código para instalar um disco RAM disponível na reinicialização do Linux.
Em seguida, mapeie tmpdir para
/var/tmpfs
DE UMA CHANCE !!!
fonte