Eu (bem, meu script cron) tentei killall mysqldump
e isso não terminou muito bem - o servidor mysql parou de aceitar conexões depois de um tempo.
Era a máquina Debian Jessie com mysql 5.5.55-0+deb8u1
.
O cenário de uso foi:
havia uma
SELECT
consulta de longa duração (algumas horas) que era muito lenta ou o cliente que a enviou estava com problemas (o estado da consulta eraSending data
), mas todas as outras consultas estavam indo e vindo (apenas a carga talvez fosse um pouco maior) .no backup noturno estava sendo executado com
mysqldump --max_allowed_packet=2147483648 --hex-blob --single-transaction --master-data --routines --order-by-primary --databases db1 db2 db3... | pigz -p8 > backup.sql.gz
. Ele nunca terminou, provavelmente porque estava esperando que oSELECT
acima terminasse primeiro (adivinhando aqui - era a única coisa que parecia fora do comum, e a mesma configuração funcionou bem por meses).cron job executado pela manhã, que
killall -q mysqldump
deveria encerrar o backup com segurança caso não fosse concluído no horário definido (notificando o administrador para examinar e corrigir o problema mais tarde), permitindo que as pessoas continuassem trabalhando com o servidor mysql normalmente.o resultado, no entanto, foi a tabela de conexão completa e, portanto, nenhum usuário conseguiu fazer login no servidor mysql. Houve
FLUSH /*!40101 LOCAL */ TABLES
consulta travadaWaiting for table flush
e centenas deSELECT
consultas travadas no mesmoWaiting for table flush
estado.além disso, admin matando
LOCK TABLES
a consulta mysql não ajudou, pois outras consultas SELECT permaneceramWaiting for table flush
(o que parece ser o comportamento pretendido? )
Reiniciar o servidor mysql finalmente "consertou" o problema. No entanto, querendo evitar que essa situação (e intervenções administrativas de emergência) se repitam, gostaria de encerrar com segurança o backup do mysqldump no Debian Jessie mysql-5.5.55 (ou no próximo Debian Stretch mariadb-10.1.23-8). Há algum jeito?
Se não, quais são outras opções para realizar o backup do mysql e evitar a carga do servidor pela manhã (o que é - neste caso - quase tão ruim quanto o servidor completamente travado)?
(Eu gostaria de ficar com os pacotes Debian Stable, se possível)