2011-10-30 27 views
2

Ubuntu 11.04で30分おきにMySQL 5.1.54が再起動する問題があります。これが発生すると、次はMySQLのログに表示されます。Ubuntu 11.04で30分ごとにMySQLが再起動

111030 12:01:52 [Note] /usr/sbin/mysqld: Normal shutdown 

111030 12:01:52 [Note] Event Scheduler: Purging the queue. 0 events 
111030 12:01:52 InnoDB: Starting shutdown... 
111030 12:01:54 InnoDB: Shutdown completed; log sequence number 0 875122 
111030 12:01:54 [Note] /usr/sbin/mysqld: Shutdown complete 

111030 12:01:55 [Note] Plugin 'FEDERATED' is disabled. 
111030 12:01:55 InnoDB: Initializing buffer pool, size = 256.0M 
111030 12:01:55 InnoDB: Completed initialization of buffer pool 
111030 12:01:55 InnoDB: Started; log sequence number 0 875122 
111030 12:01:55 [Note] Event Scheduler: Loaded 0 events 
111030 12:01:55 [Note] /usr/sbin/mysqld: ready for connections. 
Version: '5.1.54-1ubuntu4-log' socket: '/var/run/mysqld/mysqld.sock' port: 3306 (Ubuntu) 

これは、時計のように30分ごとに発生するので、それは明らかにそれを再起動するいくつかのサービスです。

私は(システムユーザを含む)システム上のすべてのユーザーのcrontabファイルをチェックして、あなたは以下の出力で見ることができるようにそれらのどれもが、crontabのセットアップを持っていない:

# awk -F: '{print $1}' /etc/passwd | xargs -n 1 -i crontab -u {} -l 
no crontab for root 
no crontab for daemon 
no crontab for bin 
no crontab for sys 
no crontab for sync 
no crontab for games 
no crontab for man 
no crontab for lp 
no crontab for mail 
no crontab for news 
no crontab for uucp 
no crontab for proxy 
no crontab for www-data 
no crontab for backup 
no crontab for list 
no crontab for irc 
no crontab for gnats 
no crontab for nobody 
no crontab for libuuid 
no crontab for syslog 
no crontab for sshd 
no crontab for landscape 
no crontab for ubuntu 
no crontab for statd 
no crontab for myproxy 
no crontab for condor 
no crontab for messagebus 
no crontab for avahi 
no crontab for joe 
no crontab for smmta 
no crontab for smmsp 
no crontab for postfix 
no crontab for deploy 
no crontab for mysql 
no crontab for redis 

私のdmesgが含まれていますそれが再開されるたびに毎回。私は、AppArmorの専門家ではないんだけど、私は、これはMySQLのサービスが起動するたびに得られた正常なメッセージであると考えている:

[1165328.780405] type=1400 audit(1319976114.984:74): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=31985 comm="apparmor_parser" 

はまた、ここでは/ etc/initを/ MySQLでMySQLの成り上がりコンフィギュレーションの内容です。 conf:

# MySQL Service 

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

start on (net-device-up 
      and local-filesystems 
     and runlevel [2345]) 
stop on runlevel [016] 

respawn 

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 
     } 
     sleep 1 
    done 
    exit 1 
end script 

何が原因なのでしょうか?それは、 "PIDがサービスmysqldを変更しました"と言っているMonit警告以外の問題を引き起こすことはありません(私はMonitがmysqldを監視していますが、30分ごとにmysqldプロセスにエラーは報告されませんMySQLが再起動されてからPIDが変更されました)。

ありがとうございます。

+2

upstartでmysqlジョブの定義を確認できますか? (/etc/init/mysql.conf) – hovanessyan

+0

投稿、ありがとうございました。 – user1020643

答えて

0

upstartでmysqlジョブの定義を確認できますか? (/etc/init/mysql.conf)。 OK = "respawn"を削除してみてください。起動時のドキュメントに記載されているように動作しません。一般的に、プロセスが他のプロセスによって強制終了された場合、プロセスを再生成するために使用されますが、期待どおりに機能しないようです。スクリプト内の開始前のスタンザが原因で、apparmourが常にロードされている理由がわかります。 upstartは非常に新しく、まだ進化しているので、SysVの方が良い方法です。

+0

これを今すぐ削除してMySQLを再起動しようとしました。私はSysVの方法に固執することに同意します。しかし、これは、Ubuntu 11.04で標準のmysql-serverパッケージとともにパッケージ化されたすぐに使える起動スクリプトであるため、動作することが期待されます。それにもかかわらず、私は次の30分以内に問題が続くかどうかを知ります。あなたの提案をありがとう。 – user1020643

+0

いいえ、upstartスクリプトから「respawn」を削除してから30分後に再起動し、手動で再起動しました。 : – user1020643

+0

apparmourのプロフィールを無効にするよりも、私はこの 'out-of-the-box'起動スクリプトにも頼っていますが、常に期待通りに動作するとは限りません。 - 現在の新任の仕事の定義をコピーし、それを最小限に抑えます(スクリプトを実行するランレベル+サービスの開始コマンド) - そのスクリプトを使用するより結果が表示されたら、 )これが助けにならないなら、あなたの問題はMYSQL自体ではなく、別のサービスによって引き起こされます。 – hovanessyan

0

AppArmorを使用せずに実行するようにしてください。アップスタートを使わずに/usr/bin/mysqld_safeまたは/usr/bin/mysqldを実行して30分待ってください。 mysqlが自動再起動しない場合は、/etc/init/mysql.confファイルでAppArmorを無効にするか、別の方法で設定してください。

問題が解決しない場合は、mysqlのログを読んでください。デフォルトでログが有効になっていない場合は、mysqldを起動するときにオプション--log-error=/tmp/mysql.log --log-warningsを使用できます。

1

シェフやパペットを使用していますか?リブートを引き起こす何かをしている可能性がありますか?

0

起動スクリプトを/etc/init.d/mysql起動スクリプトを起動スクリプトではなくsysV形式に変換すると、問題が解決されたようです。

0

私はこの同じ問題をUbuntu 14.04にアップグレードしました。 AppArmorのログメッセージが記述されているので、この質問が見つかりました。ありがとうございます!私は、MySQLが別の方法で再起動していることを認識していないかもしれませ

/var/log/daemon.logを調査したところ、/etc/mysql/debian-startの出力が繰り返し出現していました。私は/etc/mysql/debian-startスクリプトを読んで、(MySQLサーバを同時に実行する必要があります)、それをデバッグすることを望んで、スクリプトのようにアップグレードコマンドを実行してみました

May 18 06:48:18 tom /etc/mysql/debian-start[15525]: Upgrading MySQL tables if necessary. 
May 18 06:48:18 tom /etc/mysql/debian-start[15528]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored 
May 18 06:48:18 tom /etc/mysql/debian-start[15528]: Looking for 'mysql' as: /usr/bin/mysql 
May 18 06:48:18 tom /etc/mysql/debian-start[15528]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck 
May 18 06:48:18 tom /etc/mysql/debian-start[15528]: Error: Server version (5.5.35-1ubuntu1) does not match with the version of 
May 18 06:48:18 tom /etc/mysql/debian-start[15528]: the server (5.5.37) with which this program was built/distributed. You can 
May 18 06:48:18 tom /etc/mysql/debian-start[15528]: use --skip-version-check to skip this check. 
May 18 06:48:18 tom /etc/mysql/debian-start[15528]: FATAL ERROR: Upgrade failed 

:関連部分はこのだった

/usr/bin/mysql_upgrade --defaults-extra-file=/etc/mysql/debian.cnf 

これは苦情がなくても機能し、すべての点がその点から単純に機能していることがわかりました。私はなぜそれが最初に失敗しているのか分からないが、それはそれを修正するようだった。 MySQLはそれ以来再起動していません。

関連する問題