mysqld_multi停止似乎不工作

mysqld_multi stop 1后面(反复,稍后片刻)

mysqld_multi report 1返回:

Reporting MySQL servers

MySQL server from group: mysqld1 is running

实例工作正常,当我重新启动,我必须启动实例,让他们回来(我需要解决一个单独的问题),但stop命令似乎并没有做任何事情。

它确实不会停止实例,因为在实例日志文件中我看到: 120619 11:12:39 mysqld_safe A mysqld process already exists在尝试运行后start120619 11:12:39 mysqld_safe A mysqld process already exists

每当发生这种情况,我通常尝试使用mysqladminclosuresmysql

例如,closures在端口3307上运行的mysql

 mysqladmin -h127.0.0.1 -P3307 -uroot -p shutdown 

一旦你运行确认,那个端口上的mysql确实是这样的:

 mysqladmin -h127.0.0.1 -P3307 -uroot -p ping 

试一试 !!!

停止任何mysqld_multi权限的实例应该被授予multi_admin用户。 请检查拨款的一部分。

closuresmysql服务(使用mysqladmin -h127.0.0.1 -uroot -p shutdown )并重新启动后,我无法从外部客户端连接到该服务器

我查了一下这个问题 ,发现了这个问题 ,应用了答案,这样问题就解决了。 那是因为mysqld的浪费DNS反向查询。

mysqld_multi只是一个perl脚本。 为什么mysqld_multi start 1mysqld_multi report 1工作正常,但是mysqld_multi stop 1不是,位于my_print_defaults。

 my_print_defaults mysqld_multi -s --mysqld=/usr/bin/mysqld_safe --mysqladmin=/usr/bin/mysqladmin --user=multi_admin --password=yy my_print_defaults mysqld_multi --mysqld=/usr/bin/mysqld_safe --mysqladmin=/usr/bin/mysqladmin --user=multi_admin --password=***** 

在MySQL5.6 +中,密码默认显示为“ ”, mysqld_multi start,报表不需要授权,所以密码是mysqld_multi ,而且是工作的,但是在停止的时候需要用户名和密码进行授权, “ ”打破了mysqld_multi stop

解决scheme:

  1. 修改mysqld_multi,将-s选项添加到my_print_defaults
  2. mysqld_multi stop 4 –password = my_password

@RolandoMySQLDBA的解决scheme的作品,只是因为mysqld_multi将最终依靠mysqladmin来pipe理mysqld实例

这个问题在MYSQL 5.7.7中仍然存在这听起来很有趣,但是解决方法是在my.cnf中为[multi_admin]组用户使用pass而不是密码。

 [mysqld_multi] mysqld = /usr/bin/mysqld_safe mysqladmin = /usr/bin/mysqladmin user = multi_admin pass = pass123