6

mysqld_multi stop 1 followed by (repeatedly, a few moments later)

mysqld_multi report 1 returns:

Reporting MySQL servers

MySQL server from group: mysqld1 is running

The instances work fine and when I reboot, I have to start the instances to get them to come back up (a separate issue I need to resolve), but the stop command doesn't seem to do anything.

It truly doesn't stop the instance because in the instance log file I see this: 120619 11:12:39 mysqld_safe A mysqld process already exists after trying to run start after.

gravyface
  • 13,947
  • 16
  • 65
  • 100

5 Answers5

8

Whenever this happens, I usually try to shutdown mysql using mysqladmin

For example, to shutdown mysql running on port 3307

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

Once you ran that make sure, mysql on that port is indeed down like this:

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

Give it a Try !!!

RolandoMySQLDBA
  • 16,364
  • 3
  • 47
  • 80
  • `mysqld_multi report` should also shown as stopped after the shutdown command (if that's easier than running the ping) – thinice Jun 19 '12 at 16:44
2

To stop any instance of mysqld_multi privileges should be granted to multi_admin user. Kindly check grants part also.

Yogesh
  • 121
  • 3
2

This issue is still present in MYSQL 5.7.7 It sounds funny but the work around is to use pass instead of password in my.cnf for [multi_admin] group user.

[mysqld_multi]
mysqld     = /usr/bin/mysqld_safe
mysqladmin = /usr/bin/mysqladmin
user       = multi_admin
pass       = pass123
shaurabh
  • 21
  • 1
0

after shutting down mysql service (using mysqladmin -h127.0.0.1 -uroot -p shutdown) and start it again, I could not connect to that server from external clients

I looked up the problem and I found this question, applied the answer, so that the problem is solved. that was because of waste DNS reverse query of mysqld.

0

mysqld_multi is just a perl script. Whymysqld_multi start 1 and mysqld_multi report 1 working, but mysqld_multi stop 1 not, lies in 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=*****

In MySQL5.6+, password will be shown in "" by defaults, mysqld_multi start, report doesn't need authorization, so password is of no use, and it workers, but when stoping, user & password is needed for authorization, and "" breaks down mysqld_multi stop.

Solutions:

  1. modify mysqld_multi, add -s option to my_print_defaults
  2. mysqld_multi stop 4 --password=my_password

@RolandoMySQLDBA 's solution works, just because mysqld_multi will finally rely on mysqladmin to admin mysqld instance