Problemas com o MySQL são reiniciados na execução de um agendador crontab

1

Eu escrevi um script de shell que inicia o MySQL quando ele é morto / finalizado. Estou executando este script de shell usando um crontab.

Meu cron procura pelo arquivo de script chamado mysql.sh em /root/mysql.sh

sh /root/mysql.sh  

mysql.sh:

cd /root/validate-mysql-status
sh /root/validate-mysql-status/validate-mysql-status.sh

validate-mysql-status.sh:

# mysql root/admin username
MUSER="xxxx"
# mysql admin/root password
MPASS="xxxxxx"
# mysql server hostname
MHOST="localhost"
MSTART="/etc/init.d/mysql start"
# path mysqladmin
MADMIN="$(which mysqladmin)"

# see if MySQL server is alive or not
# 2&1 could be better but i would like to keep it simple
$MADMIN -h $MHOST -u $MUSER -p${MPASS} ping 2>/dev/null 1>/dev/null
if [ $? -ne 0 ]; then
    # MySQL's status log file
    MYSQL_STATUS_LOG=/root/validate-mysql-status/mysql-status.log

    # If log file not exist, create a new file
    if [ ! -f $MYSQL_STATUS_LOG ]; then
        cat "Creating MySQL status log file.." > $MYSQL_STATUS_LOG
        now="$(date)"
        echo [$now] error     : MySQL not running >> $MYSQL_STATUS_LOG
    else
        now="$(date)"
        echo [$now] error     : MySQL not running >> $MYSQL_STATUS_LOG
    fi

    # Restarting MySQL
    /etc/init.d/mysql start

    now1="$(date)"
    echo [$now1] info     : MySQL started >> $MYSQL_STATUS_LOG
    cat $MYSQL_STATUS_LOG
fi

Quando executo manualmente o script de shell mysql acima usando o crontab do webmin, o MySQL é iniciado com sucesso (quando é eliminado).

No entanto, quando eu programo usando um cron job, o MySQL não inicia. Os logs são impressos corretamente (significa que meu cron executa o script agendado com sucesso, no entanto, o MySQL não está reiniciando).

crontab -l exibe:

* * * * * sh /root/mysql.sh 

Eu descobri através de URL's que devemos dar um caminho absoluto para reiniciar o MySQL através de agendadores como o cron. No entanto, não funcionou para mim.

Alguém por favor pode me ajudar!

Obrigado.

    
por Senthil Kumaran 06.01.2014 / 15:51

1 resposta

1

Existe um serviço chamado monit que faz isso tão fácil quanto possível. Você pode configurá-lo para qualquer serviço de reinicialização desse serviço para algumas condições e pode alertá-lo se as condições não funcionarem. Monit

    
por 06.01.2014 / 15:59