É possivel reinicializar um servidor MySQL remoto no Ubuntu a partir de um programa ou script em um Mac? [fechadas]

2

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:

  1. Abra uma janela do prompt de comando do terminal
  2. digite e execute: ssh root@IP-HERE -l root
  3. digite a senha do usuário do servidor: server-user-password v
  4. digite e execute o comando: 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:

  • Desenvolvedor / Admin (eu) : executando um computador com Windows 7
  • Cliente : está executando um Mac OS X (o mais novo SO w / e é)
  • Servidor : está executando o Ubuntu 12.0.4

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?

    
por JasonDavis 30.03.2016 / 09:07

4 respostas

4

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.

    
por 30.03.2016 / 10:46
2

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.

    
por 30.03.2016 / 11:40
1

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.

    
por 30.03.2016 / 10:56
1

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.

    
por 30.03.2016 / 11:37