A exibição do log de erros parece bastante normal
O arquivo de soquete foi criado
Replicação do MySQL começou bem
/usr/sbin/mysqld: ready for connections.
aparece
Em particular, desde que você veja /usr/sbin/mysqld: ready for connections.
, você deve ser capaz de se conectar ao mysql que você acabou de afirmar que você pode.
Seu processo mysqld está bem.
O erro pode estar vindo de /etc/init.d/mysql
, mas não antes de o mysqld ter feito tudo o que precisava fazer.
Se você olhar dentro de /etc/init.d/mysql
, há duas linhas
[root@***** init.d]$ cat mysql | grep -n "&" | grep "pid-file"
313: $manager --user=$user --pid-file=$pid_file >/dev/null 2>&1 &
327: $bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &
Se /etc/init.d/mysql
expirou, isso ocorreu após essas duas linhas.
Aqui está o código que verifica o arquivo pid
wait_for_pid () {
verb="$1"
manager_pid="$2" # process ID of the program operating on the pid-file
i=0
avoid_race_condition="by checking again"
while test $i -ne $service_startup_timeout ; do
case "$verb" in
'created')
# wait for a PID-file to pop into existence.
test -s $pid_file && i='' && break
;;
'removed')
# wait for this PID-file to disappear
test ! -s $pid_file && i='' && break
;;
*)
echo "wait_for_pid () usage: wait_for_pid created|removed manager_pid"
exit 1
;;
esac
# if manager isn't running, then pid-file will never be updated
if test -n "$manager_pid"; then
if kill -0 "$manager_pid" 2>/dev/null; then
: # the manager still runs
else
# The manager may have exited between the last pid-file check and now.
if test -n "$avoid_race_condition"; then
avoid_race_condition=""
continue # Check again.
fi
# there's nothing that will affect the file.
log_failure_msg "Manager of pid-file quit without updating file."
return 1 # not waiting any more.
fi
fi
echo $echo_n ".$echo_c"
i='expr $i + 1'
sleep 1
done
if test -z "$i" ; then
log_success_msg
return 0
else
log_failure_msg
return 1
fi
}
wait_for_pid()
é chamado após o lançamento do mysqld_safe
# Give extra arguments to mysqld with the my.cnf file. This script
# may be overwritten at next upgrade.
pid_file=$server_pid_file
$bindir/mysqld_safe --datadir=$datadir --pid-file=$server_pid_file $other_args >/dev/null 2>&1 &
wait_for_pid created $!; return_value=$?
No pior dos casos, o mysqld está rodando sem um arquivo pid. Em vista disso, service mysql stop
e /etc/init.d/mysql stop
podem não funcionar corretamente, pois verifica se o arquivo pid sabe o id do processo do mysqld.
Sem um arquivo pid, o jeito certo de desligar o mysqld é
# mysqladmin -uroot -h127.0.0.1 --protocol=tcp -p shutdown
CAVEAT
Este não é aquele local de um fenômeno. Eu vi isso acontecer com binários padrão do MySQL também.