Nova instalação do CentOS.
Eu estava executando uma importação de um grande banco de dados (arquivo sql de 2GB) e tive um problema. O cliente SSH pareceu perder a conexão e a importação pareceu congelar. Eu usei outra janela para acessar o mysql e a importação parecia estar morta, presa em uma tabela de linhas 3M específica.
Então eu tentei
DROP DATABASE huge_db;
15-20 minutos depois, nada. Em outra janela, eu fiz:
/etc/init.d/mysqld restart
A janela DROP DB envia uma mensagem: SERVER SHUTDOWN. Então, na verdade, reiniciei o servidor físico.
Conectado novamente no mysql, verificado e o db ainda estava lá, executei
DROP DATABASE huge_db;
novamente, e novamente já estou esperando cerca de 5 minutos.
Mais uma vez, é uma nova instalação. O huge_db
é o único banco de dados (que não seja o sistema dbs). Juro que perdi db desse tamanho antes e rapidamente, mas talvez eu esteja errado.
Larguei o banco de dados com sucesso. Demorou cerca de 30 minutos. Observe também que acho que me enganei quando pensei que a importação do mysqldump estava morta. A conexão do terminal foi perdida, mas acho que o processo ainda estava em execução. Provavelmente matei a importação no meio da tabela (a tabela de linhas 3M) e provavelmente 3/4 do caminho durante todo o banco de dados. Era enganoso que "top" mostrasse o mysql usando apenas 3% da memória, quando parecia que deveria estar usando mais.
A interrupção do banco de dados levou 30 minutos, então, novamente, talvez eu não tivesse que reiniciar o servidor e possivelmente apenas esperasse o DROP terminar, mas não sei como o mysql reagiria ao obter uma consulta DROP para o mesmo db que está importando via mysqldump.
Ainda assim, a questão permanece: por que são necessários 30min + para DROP um banco de dados de 2GB quando tudo o que precisa fazer é excluir todos os arquivos db e remover todas as referências ao banco de dados do information_schema? Qual é o grande problema?
DROP DATABASE
comando, o servidor não continuará até que todas as conexões tenham sido fechadas.