Назад | Перейти на главную страницу

Почему «запуск службы mysql» не запускает mysqld_safe?

Я установил mysql на Ubuntu и документация при запуске говорит:

Вызвать mysql.server. Этот сценарий используется в основном при запуске и завершении работы системы в системах, которые используют каталоги запуска в стиле System V (то есть /etc/init.d и каталоги, специфичные для уровня выполнения), где он обычно устанавливается под именем mysql. В mysql.server сценарий запускает сервер, вызывая mysqld_safe.

Однако mysql файл в /etc/init.d просто связано с /lib/init/upstart-job, а mysql.conf файл в /etc/init это:

# MySQL Service

description     "MySQL Server"
author          "Mario Limonciello <superm1@ubuntu.com>"

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

У меня два вопроса:

В настоящее время, mysqld_safe является частью MySQL 5.5. Я не могу говорить о вещах, связанных с Ubuntu.

Сначала выясните, присутствует ли и доступен ли mysqld_safe. Запустите это:

which mysqld_safe

Если он возвращается с абсолютным путем к программе mysqld_safe, например

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

тогда вы могли бы заменить

exec /usr/sbin/mysqld

с участием

exec /usr/sbin/mysqld_safe

Затем, service mysql start.

Пожалуйста, сделайте это сначала на Dev / Staging сервере. Чтобы подчеркнуть, я не могу говорить от имени Ubuntu.