log - ¿Cómo ejecuto una consulta en MYSQL sin escribirla en el registro binario?
enable binary log mysql (2)
Quiero ejecutar una importación de un archivo grande en MySQL. Sin embargo, no quiero que se escriba en el registro binario, porque la importación llevará mucho tiempo y hará que los esclavos se retrasen. Prefiero ejecutarlo por separado en los esclavos, después del hecho, porque será mucho más fácil para el sistema. La tabla en cuestión es nueva y, por lo tanto, no tengo que preocuparme de que se desincronice, ya que el maestro y todos los esclavos tendrán los mismos datos al final, porque todos importarán el mismo archivo. finalmente. Tampoco quiero cambiar ninguna de las opciones de replicate-ignore- * o binlog_ignore- *, ya que requieren el reinicio de los servidores en cuestión. ¿Hay alguna forma de ejecutar una única consulta sin escribirla en el registro binario?
Ya sé la respuesta, pero no pude encontrarla fácilmente en la red, así que dejo que alguien publique la respuesta para obtener algunos puntos de rep. Si no hay respuestas en blanco, publicaré la respuesta que encontré.
Puede usar la variable de sesión sql-log-bin para desactivar el registro de la sesión actual. Simplemente ingrese:
SET sql_log_bin = 0;
y todas las consultas en su sesión actual no serán enviadas al registro binario. Si quieres volver a activar el registro binario, ejecuta:
SET sql_log_bin = 1;
Esto es solo para la sesión en la que se está ejecutando en ese momento. Todas las demás consultas de todas las demás conexiones continuarán siendo registradas. Además, debe tener privilegios SUPER para que esto funcione.
Si quieres hacer esto desde el cli, prueba esto, funcionó para mí:
$ mysqldump old_DB | mysql --init-command="SET SQL_LOG_BIN = 0;" new_DB
Es posible que el param "init-command" se haya agregado en una nueva versión de MySQL.