web-dev-qa-db-ja.com

「servicemysqlstart」がmysqld_safeを実行しないのはなぜですか?

Ubuntuにmysqlをインストールしましたが、起動時に ドキュメント と表示されます。

mysql.serverを呼び出します。このスクリプトは主に、System Vスタイルの実行ディレクトリ(つまり、/ etc/init.dおよび実行レベル固有のディレクトリ)を使用するシステムのシステムの起動およびシャットダウン時に使用されます。通常、このスクリプトはmysqlmysql.serverスクリプトは、mysqld_safeを呼び出してサーバーを起動します。

ただし、/etc/init.dmysqlファイルは単に/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

2つの質問があります:

  • ドキュメントは間違っていますか?
  • mysqlmysqld_safeの下で開始するように構成するにはどうすればよいですか?
2
Chris B.

現在、 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

最初に開発/ステージングサーバーでこれを行ってください。強調するために、私はUbuntuについて話すことができません。

2
RolandoMySQLDBA