web-dev-qa-db-fra.com

Recharger mon.cnf sans redémarrer le service MySQL

Je dois configurer un serveur MySQL pour agir en tant que maître de réplication.

J'ai modifié mon.cnf pour activer les journaux binaires, mais maintenant pour recharger la configuration, je dois recharger le service avec /etc/init.d/mysqld restart. Le problème est que le serveur reçoit plusieurs requêtes par seconde et je ne veux pas perdre toutes les données qui pourraient arriver pendant ce temps.

Existe-t-il un moyen de recharger le fichier de configuration my.cnf sans redémarrer le service?

26
David Espart

MySQL Spécifiquement:
[.____] Les options de my.cnf sont variables système . Ces variables sont soit dynamiques (peuvent être modifiées au moment de l'exécution) ou non dynamiques. Ceux qui sont dynamiques, peuvent être modifiés au moment de l'exécution avec la syntaxe de variable définie. Vous pouvez voir les variables avec SHOW VARIABLES;. Mais selon ce lien dans le manuel , l'option de journal binaire n'est pas dynamique. Donc, on dirait que vous devez redémarrer. Vous voudrez peut-être attendre quelqu'un qui sait mysql un peu mieux que moi de la confirmer cependant.

Démons en général:
[.____] dans Linux, /etc/init.d/ Détient des scripts qui démarrent et arrêtent les démons (services). Comme ce sont des scripts, vous pouvez les afficher avec un éditeur de texte. Beaucoup de ces scripts prendront un argument de recharge. En regardant mon script MySQL, Recharger en tant qu'argument utilise la commande mysqladmin. Donc, le manuel de MySqladmin sous Recoad dit:

recharger

Reload the grant tables.

On dirait donc en général, cela ne concerne pas les changements de configuration, mais plutôt les changements de privilèges (peut-être la commande de privilèges de chasse-close équivalente?).

28
Kyle Brandt

je cherche une solution pour cela, mais je n'étais pas satisfait de l'aide limitée que j'ai trouvée. Un chapeau a offert un kill -hup .. n'a pas fonctionné pour moi ..

ce que j'ai fait était de mettre en pause les instances Apache .. et ensuite les poursuivre ultérieurement .. Travaillé comme un charme sur un serveur où j'ai une moyenne de 25 demandes actives par seconde.

avec sudo (évidemment) pkill -stop httpd && /etc/init.d/mysqld redémarrer && pkill -cont httpd

ourez-vous que votre nom de processus Apache et/ou des scripts de redémarrage MySQL peuvent varier de la mienne, mais vous obtenez l'idée!

1