Você já pensou em monitorar o MYSQL Server?
Talvez o Nagios seja muito grande, mas o que tem um script e um cron ou monit também é muito leve.
O Monit fornece um front-end básico muito fácil, no qual você também pode reiniciar os serviços.
Eu tenho um cliente que tem um servidor web hospedado com a Digital Ocean e eles têm um estranho problema de banco de dados MySQL aleatório ...
1-4 vezes por mês, o servidor de banco de dados falha e precisa ser reinicializado manualmente.
Eu não consegui descobrir a causa dessa falha aleatória, então, atualmente, tenho que fazer esse processo toda vez que isso acontece:
ssh root@IP-HERE -l root
server-user-password
v service mysql restart
Isso reinicia o servidor MySQL e tudo fica ótimo novamente até uma semana ou 3 depois, quando acontecer aleatoriamente novamente e depois repetir o processo.
Como meu cliente não tem experiência de administração de servidor e nem sabe o que é um prompt de comando / janela de terminal ... Eu preciso encontrar uma solução que permita que qualquer pessoa, incluindo um macaco, possa para replicar o processo descrito acima quando não estiver disponível!
Algumas informações:
Com essa informação, seria possível construir algum tipo de script de solução de 1 clique onde o cliente pudesse clicar e lançar um script / programa do Mac que executaria o processo acima para reinicializar seu servidor MySQL quando esta emergência questão surge para ele e eu não estou por perto para ajudar?
Você já pensou em monitorar o MYSQL Server?
Talvez o Nagios seja muito grande, mas o que tem um script e um cron ou monit também é muito leve.
O Monit fornece um front-end básico muito fácil, no qual você também pode reiniciar os serviços.
Acho que a maneira mais fácil seria usar monit . É um utilitário leve para monitorar e gerenciar daemons ou programas semelhantes.
Instalar monit
# aptitude install monit
Crie um arquivo conf para o mysql
# cat /etc/monit/conf.d/mysql
check process mysqld with pidfile /var/run/mysqld/mysqld.pid
group database
start program = "/etc/init.d/mysql start"
stop program = "/etc/init.d/mysql stop"
if failed host 127.0.0.1 port 3306 then restart
if 5 restarts within 5 cycles then timeout
Reinicie o monit
# service monit restart
Verifique o status do mysql
# netstat -an | grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
# service mysql status
mysql start/running, process 33446
Pare o servidor mysql (apenas para emular alguns problemas)
# service mysql stop
Verifique o arquivo de log monit
[EEST Mar 30 12:34:10] info : 'ubuntu14' Monit started
[EEST Mar 30 12:36:10] error : 'mysqld' process is not running
[EEST Mar 30 12:36:10] info : 'mysqld' trying to restart
[EEST Mar 30 12:36:10] info : 'mysqld' start: /etc/init.d/mysql
[EEST Mar 30 12:38:12] info : 'mysqld' process is running with pid 34085
Em alguns minutos, ele reinicia o servidor mysql
Mas é apenas uma solução alternativa, já que @lain mencionou que você deve encontrar a raiz do problema.
Primeiro, você tem (para gerar se não existir e) transferir as chaves ssh para o servidor (para obter login sem senha):
ssh-copy-id root@IP-HERE
Faça login no servidor e configure um script como:
#!/bin/bash
service mysql restart
exit 0
Torne-o executável:
chmod +x script.sh
No seu cliente, você quer chamar o script via ssh. Simplifique a execução do seguinte comando ssh (Use o Platypus ou o Apple Automator, etc. como wrapper):
ssh root@IP-HERE -l root script.sh
Agora você pode passar um servidor de cliques para seus clientes.
BTW: Você deve resolver o problema, não criar uma solução alternativa de reinicialização. Eu garanto, haverá mais dor de cabeça utilizando esta solução alternativa de reinicialização do que corrigir o problema. Como peabody disse, você deve olhar munin ou monit para detectar o problema subjacente.
Esqueça o reinício manual, é muito lento e precisa de você ou cliente (você quer ir de férias às vezes, não é?). Basta configurar algum monitoramento e fazer isso automaticamente. Zabbix
e Nagios
são bons para monitoramento geral, mas talvez muito grandes para um servidor. Você pode configurar monit
para verificar seu mysql e reiniciar automaticamente e quase instantaneamente.
Mas você está consertando sintoma, não causa, o que é ruim. Você tem que encontrar uma verdadeira razão pela qual o mysql está travando (habilite o log mais detalhado, monitore outras métricas do servidor) e corrija-o.