Por que o “serviço mysql start” não é executado mysqld_safe?

2

Eu instalei mysql no Ubuntu e a documentação ao iniciá-lo, diz:

Invoke mysql.server. This script is used primarily at system startup and shutdown on systems that use System V-style run directories (that is, /etc/init.d and run-level specific directories), where it usually is installed under the name mysql. The mysql.server script starts the server by invoking mysqld_safe.

No entanto, o arquivo mysql em /etc/init.d é simplesmente vinculado a /lib/init/upstart-job , e o arquivo mysql.conf em /etc/init é este:

# MySQL Service

description     "MySQL Server"
author          "Mario Limonciello <[email protected]>"

start on runlevel [2345]
stop on starting rc RUNLEVEL=[016]

respawn
respawn limit 2 5

env HOME=/etc/mysql
umask 007

# The default of 5 seconds is too low for mysql which needs to flush buffers
kill timeout 300

pre-start script
    #Sanity checks
    [ -r $HOME/my.cnf ]
    [ -d /var/run/mysqld ] || install -m 755 -o mysql -g root -d /var/run/mysqld
    /lib/init/apparmor-profile-load usr.sbin.mysqld
    LC_ALL=C BLOCKSIZE= df --portability /var/lib/mysql/. | tail -n 1 | awk '{ exit ($4<4096) }'
end script

exec /usr/sbin/mysqld

post-start script
   for i in 'seq 1 30' ; do
        /usr/bin/mysqladmin --defaults-file="${HOME}"/debian.cnf ping && {
            exec "${HOME}"/debian-start
            # should not reach this line
            exit 2
        }
        statusnow='status'
        if echo $statusnow | grep -q 'stop/' ; then
            exit 0
        elif echo $statusnow | grep -q 'respawn/' ; then
            exit 1
        fi
        sleep 1
    done
    exit 1
end script

Eu tenho duas perguntas:

  • A documentação está errada?
  • Como posso configurar o mysql para começar em mysqld_safe ?
por Chris B. 16.01.2013 / 17:28

1 resposta

2

Atualmente, o mysqld_safe faz parte do MySQL 5.5 . Eu não posso falar por coisas específicas do Ubuntu.

Primeiro, descubra se o mysqld_safe está presente e acessível. Execute isto:

which mysqld_safe

Se ele retornar com o caminho absoluto para o programa mysqld_safe como

[root@**** mysql]# which mysqld_safe
/usr/bin/mysqld_safe

então você pode substituir

exec /usr/sbin/mysqld

com

exec /usr/sbin/mysqld_safe

Então, service mysql start .

Por favor faça isso em um servidor Dev / Staging primeiro. Para ênfase, não posso falar pelo Ubuntu.

    
por 16.01.2013 / 17:51