为什么“service mysql start”不运行mysqld_safe?

为什么“service mysql start”不运行mysqld_safe?

我已经mysql在 Ubuntu 上安装了,并且文档启动时显示:

调用mysql.服务器。此脚本主要用于使用 System V 样式运行目录(即 /etc/init.d 和运行级别特定目录)的系统启动和关闭时,通常以 名称安装mysqlmysql.服务器脚本通过调用来启动服务器mysqld_safe

但是,mysql中的文件/etc/init.d只是简单地链接到/lib/init/upstart-job,并且mysql.conf中的文件/etc/init是这样的:

# 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

我有两个问题:

  • 文档有误吗?
  • 我该如何配置mysql才能在 下启动mysqld_safe

答案1

现在,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 发言。

相关内容