Tengo que configurar un servidor MySQL para que actúe como maestro de replicación.
Modifiqué my.cnf para activar registros binarios, pero ahora para recargar la configuración tengo que recargar el servicio /etc/init.d/mysqld restart
. El problema es que el servidor recibe varias consultas por segundo y no quiero perder todos los datos que podrían llegar mientras tanto.
¿Hay alguna manera de volver a cargar el archivo de configuración my.cnf sin reiniciar el servicio?
mysql
replication
David Espart
fuente
fuente
/etc/init.d/restart
reiniciaría todo el host. Probablemente estés pensando/etc/init.d/mysqld restart
Respuestas:
MySQL específicamente: las
opciones en my.cnf son variables del sistema . Estas variables son dinámicas (se pueden cambiar en tiempo de ejecución) o no dinámicas. Los que son dinámicos, se pueden cambiar en tiempo de ejecución con la sintaxis de la variable SET. Puedes ver las variables con
SHOW VARIABLES;
. Pero de acuerdo con este enlace en el manual , la opción de registro binario no es dinámica. Entonces parece que tienes que reiniciar. Sin embargo, es posible que desee esperar a alguien que conoce mysql un poco mejor que yo para confirmar esto.Daemons en general:
en Linux, /etc/init.d/ contiene scripts que inician y detienen daemons (servicios). Como se trata de scripts, puede verlos con un editor de texto. Muchos de estos scripts tomarán un argumento de recarga. Mirando mi script mysql, recargar como argumento usa el comando mysqladmin. Entonces el manual para mysqladmin bajo recarga dice:
Parece que, en general, esto no es para cambios de configuración, sino para cambios en los privilegios (¿Quizás el comando de privilegios de descarga equivalente?).
fuente
He estado buscando una solución para esto, pero no estoy satisfecho con la ayuda limitada que encontré. Un tipo ofreció un kill -HUP ... no funcionó para mí ...
lo que hice fue pausar las instancias de apache ... y luego continuarlas más tarde ... funcionó de maravilla en un servidor donde tengo un promedio de 25 solicitudes activas por segundo.
con sudo (obviamente) pkill -STOP httpd && /etc/init.d/mysqld restart && pkill -CONT httpd
por supuesto, el nombre de su proceso de apache y / o los scripts de reinicio de mysql pueden diferir del mío, ¡pero tiene la idea correcta!
fuente