Назад | Перейти на главную страницу

mysqld_multi stop, похоже, не работает

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 после попытки бежать start после.

Каждый раз, когда это происходит, я обычно пытаюсь закрыть mysql, используя mysqladmin

Например, чтобы отключить mysql, работающий на порту 3307

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

После запуска убедитесь, что mysql на этом порту действительно не работает, например:

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

Попробуйте !!!

Чтобы остановить любой экземпляр mysqld_multi привилегии должны быть предоставлены multi_admin пользователь. Пожалуйста, проверьте также часть грантов.

Эта проблема все еще присутствует в MYSQL 5.7.7. Звучит забавно, но решение проблемы заключается в использовании пароля вместо пароля в my.cnf для пользователя группы [multi_admin].

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

после завершения работы службы mysql (используя mysqladmin -h127.0.0.1 -uroot -p shutdown) и запустить его снова, мне не удалось подключиться к этому серверу из внешние клиенты

Я поискал проблему и нашел этот вопрос, применил ответ, так что проблема решена. это было из-за ненужного DNS обратного запроса mysqld.

mysqld_multi - это просто сценарий Perl. Зачемmysqld_multi start 1 и mysqld_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 запуск, отчет не требует авторизации, поэтому пароль бесполезен, и он работает, но при остановке для авторизации требуются пользователь и пароль, и "" ломается mysqld_multi stop.

Решения:

  1. изменить mysqld_multi, добавить -s опция my_print_defaults
  2. mysqld_multi stop 4 --password = my_password

Решение @RolandoMySQLDBA работает только потому, что mysqld_multi, наконец, будет полагаться на mysqladmin для администрирования экземпляра mysqld