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

Перезагрузите my.cnf без перезапуска службы MySQL

Мне нужно настроить сервер MySQL для работы в качестве мастера репликации.

Я изменил my.cnf, чтобы активировать двоичные журналы, но теперь, чтобы перезагрузить конфигурацию, мне нужно перезагрузить службу с помощью /etc/init.d/mysqld restart. Проблема в том, что сервер получает несколько запросов в секунду, и я не хочу терять все данные, которые могут прийти за это время.

Есть ли способ перезагрузить файл конфигурации my.cnf без перезапуска службы?

В частности, MySQL:
Параметры в my.cnf: системные переменные. Эти переменные либо динамические (могут быть изменены во время выполнения), либо не динамические. Те, которые являются динамическими, могут быть изменены во время выполнения с помощью синтаксиса переменной SET. Вы можете увидеть переменные с помощью SHOW VARIABLES;. Но согласно эта ссылка в руководстве, опция двоичного журнала не является динамической. Похоже, вам нужно перезагрузить. Однако вы можете подождать, пока кто-то, кто знает mysql немного лучше меня, подтвердит это.

Демоны в целом:
В Linux /etc/init.d/ содержит сценарии, запускающие и останавливающие демонов (службы). Поскольку это скрипты, вы можете просматривать их в текстовом редакторе. Многие из этих скриптов принимают аргумент перезагрузки. Глядя на мой сценарий mysql, перезагрузка в качестве аргумента использует команду mysqladmin. Итак, руководство для mysqladmin при перезагрузке говорит:

перезагрузить

Reload the grant tables.

В общем, похоже, что это не для изменений конфигурации, а скорее для изменения привилегий (может быть, эквивалентная команда сброса привилегий?).

Я искал решение для этого, но не был удовлетворен той ограниченной помощью, которую я нашел. Один парень предложил убить ... HUP ... не сработало ...

что я сделал, так это приостановил экземпляры apache ... а затем продолжил их позже ... работал как шарм на сервере, где у меня в среднем 25 активных запросов в секунду.

с sudo (очевидно) pkill -STOP httpd && /etc/init.d/mysqld restart && pkill -CONT httpd

Конечно, ваше имя процесса apache и / или сценарии перезапуска mysql могут отличаться от моих, но вы правильно поняли!