2013-01-04 93 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做到了。