2013-01-04 143 views
25

我最近在Ubuntu 12.04 OS桌面上安裝了5.5.28-29.2 Percona服務器(GPL)版本29.2。我試圖用不同的方法停止服務器:mysql進程無法停止

- sudo /etc/init.d/mysql stop 
- sudo kill -9 pid 
- mysqladmin -u root -p shutdown 

所有這些方法都會停止進程,但是它會在進程死後自動啓動。我已經檢查系統日誌(在/ var/log/syslog的/),總是讓我看到一個跟蹤:

Jan 4 17:50:44 kernel: [ 1915.494219] init: mysql main process (17311) killed by KILL signal 
Jan 4 17:50:44 kernel: [ 1915.494245] init: mysql main process ended, respawning 
Jan 4 17:50:44 kernel: [ 1915.500025] type=1400 audit(1357318244.557:48): apparmor="STATUS" operation="profile_replace" name="/usr/sbin/mysqld" pid=18458 comm="apparmor_parser" 
Jan 4 17:50:46 /etc/mysql/debian-start[18501]: Upgrading MySQL tables if necessary. 
Jan 4 17:50:46 /etc/mysql/debian-start[18504]: /usr/bin/mysql_upgrade: the '--basedir' option is always ignored 
Jan 4 17:50:46 /etc/mysql/debian-start[18504]: Looking for 'mysql' as: /usr/bin/mysql 
Jan 4 17:50:46 /etc/mysql/debian-start[18504]: Looking for 'mysqlcheck' as: /usr/bin/mysqlcheck 
Jan 4 17:50:46 /etc/mysql/debian-start[18504]: This installation of MySQL is already upgraded to 5.5.28, use --force if you still need to run mysql_upgrade 
Jan 4 17:50:46 /etc/mysql/debian-start[18515]: Checking for insecure root accounts. 
Jan 4 17:50:46 /etc/mysql/debian-start[18520]: Triggering myisam-recover for all MyISAM tables 

你知道爲什麼程序會自動重新啓動的原因是什麼? 提前謝謝!

回答

59

我有這個完全相同的問題。運行kill命令會終止進程,但在我的情況下,它會在不同的進程ID下再次彈出。

我能想出如何阻止它的好,唯一的方法是這樣的:

sudo stop mysql 

希望有所幫助。

來源:http://www.itfromscratch.com/how-to-stop-the-percona-mysql-server/

+0

不工作'停:未知作業:mysql' – Green

+0

什麼'須藤停止mysqld'? –

+0

輸出:'stop:Unknown job:mysqld' – arun

3

我在這裏猜測,但mysqld可能會通過mysql_safe初始化腳本啓動,它將重新啓動服務器。

+0

你是對的時,mysqld正在通過mysql_safe的init腳本啓動。不過我認爲如果我使用/etc/init.d/mysql停止服務器不應該自動重啓。謝謝 – ljmelgui

15

想要殺死所有的mysql實例嗎?嘗試作爲根:

pkill mysqld; 
+2

我也嘗試用pkill殺死所有實例,但它仍然啓動。謝謝 – ljmelgui

+0

那爲我工作(Mac OS 10.9.2),謝謝! – renatoargh

+0

workon centos 6 !! –

26

使用sudo service mysql stop爲我工作。

+2

這個正確的方法 – hwatkins

+0

這是爲我工作在Ubuntu。謝謝! – agentv

+0

主要問題是ubuntu中的服務標誌,'kill -9'或'stop'會與其他發行版一樣。 你必須查看mysql日誌。它必須在底部說明:'/ [path]/mysqld:Shutdown complete',否則你的守護進程已經啓動。你可以通過'tail -f/[path]/name.log'來檢查它。 很好的答案。 – Luis

0

這可能不適用於這個特定的問題,但在這裏它反正。我檢查了錯誤日誌(「/var/log/mysql/error.log」),看到「explicit_defaults_for_timestamp = TRUE」導致錯誤(「未知變量」)。所以我從my.cnf(「/etc/mysql/my.cnf」)中刪除它,並運行「sudo start mysql」,它已經備份並運行。我希望這也有幫助!

3

對於那些在事後看到這些年來,我有類似的問題,並剛剛解決它。

似乎還有第二個init腳本叫做orig_mysql.conf,它存在於/ etc/init目錄以及mysql.conf文件中。這引起了新手啓動兩個實例,顯然當一個結束時它變得困惑。隨着這種持續的重生髮生。

我的解決辦法:

  1. 通過新貴停止MySQL的如果可能的話:service mysql stop
  2. 去除conf文件(我刪除/etc/init/orig_mysql.conf)之一。然後使用以下命令重新啓動init:telinit u
  3. 手動關閉所有剩餘的mysqld進程。

一旦確認您沒有運行mysqld進程並且它們不再進行重新生成,請使用service mysql start重新啓動mysql。

希望這可以幫助別人。我花了兩年的時間來解決這個問題。

+0

謝謝!它有幫助。 – Diode

0

你應該只刪除mysql.sock。這種方式再次運行mysqld服務將重新創建它。如果不是這種情況,只需重新啓動我使用的是Mac OS家釀去除mysql.sock

0

後的服務器。 brew services stop mysql沒有爲我工作,但sudo brew services stop mysql做到了。