Перезагрузите my.cnf без перезапуска службы MySQL
Я должен настроить сервер MySQL для работы в качестве мастера репликации.
Я изменил my.cnf, чтобы активировать двоичные журналы, но теперь, чтобы перезагрузить конфигурацию, мне нужно перезагрузить сервис с /etc/init.d/mysqld restart
, Проблема в том, что сервер получает несколько запросов в секунду, и я не хочу потерять все данные, которые могут быть получены в это время.
Есть ли способ перезагрузить файл конфигурации my.cnf без перезапуска службы?
2 ответа
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 могут отличаться от моих, но вы правильно поняли!