簡體   English   中英

MySQL在Ubuntu 11.04上每30分鍾重啟一次

[英]MySQL restarting every 30 minutes on Ubuntu 11.04

我遇到一個問題,其中MySQL 5.1.54在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都包含以下內容。 我不是專家,但是我相信這是每次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.conf中MySQL新貴配置的內容:

# MySQL Service

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

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

知道是什么原因造成的嗎? 它沒有引起任何問題,除了Monit警報指出“ PID已更改服務mysqld”(我讓Monit監視mysqld -但它沒有報告mysqld進程錯誤,除了每隔30分鍾顯示它有錯誤自從MySQL重新啟動以來,PID已更改)。

提前致謝。

您使用的廚師還是木偶,可能正在執行某些操作以觸發重新啟動?

似乎將/etc/init.d/mysql啟動腳本轉換為sysV樣式,而不是將它轉換為upstart腳本似乎可以解決我的問題。

我在升級到Ubuntu 14.04時遇到了同樣的問題。 我發現了這個問題,因為它提到了AppArmor日志消息,非常感謝! 我可能沒有意識到MySQL正在重新啟動。

在調查/var/log/daemon.log ,我發現/etc/mysql/debian-start的輸出反復出現。 相關部分是這樣的:

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

我通讀了/etc/mysql/debian-start腳本,並嘗試像腳本中一樣運行升級命令,希望對其進行調試(MySQL服務器需要同時運行):

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

然后,我發現這毫無疑問地奏效了,從那時起,一切都奏效了。 我不知道為什么它最初會失敗,但這似乎可以解決問題。 從那以后,MySQL尚未自行重啟。

您可以在upstart中檢查(可能發布)您的mysql作業的定義嗎? (/etc/init/mysql.conf)。 OK =嘗試刪除“重生”。 它不符合新貴文檔中的說明。 通常,如果它被其他進程殺死,則用於重新生成該進程,但似乎它無法按預期運行。 您可以看到為什么總是加載apparmour的原因-由於腳本中有預啟動節。 由於新貴是一個新事物,並且還在不斷發展,因此最好使用SysV方法。

您應該嘗試在沒有AppArmor的情況下運行它:只需運行/usr/bin/mysqld_safe/usr/bin/mysqld而不使用upstart,然后等待30分鍾。 如果mysql沒有自動重啟,則在/etc/init/mysql.conf文件中禁用AppArmor,或者進行其他配置。

如果問題仍然存在,請閱讀mysql的日志。 如果默認情況下未啟用日志,則在啟動mysqld時可以使用--log-error=/tmp/mysql.log --log-warnings選項。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM