Pregunta

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 queden muy lejos. 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 quede sin sincronización, 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 replicadas-ignorore-* o binlog_ignore-*, porque requieren un reinicio de los servidores en cuestión. ¿Hay una forma de ejecutar una sola consulta sin escribirla en el registro binario?

Ya sé la respuesta, pero no pude encontrarla muy fácilmente en la red, por lo que dejo que alguien publique la respuesta para obtener algunos puntos de representante. Si no hay respuestas en un poco de blanco, publicaré la respuesta que encontré.

¿Fue útil?

Solución

Puedes usar el sql-log-bin Variable de sesión para desactivar el registro para la sesión actual. Simplemente ingrese:

SET sql_log_bin = 0;

y todas las consultas en su sesión actual no se enviarán al registro binario. Si desea encender el registro binario, ejecute:

SET sql_log_bin = 1;

Esto es solo para la sesión de ejecución actualmente en la que se encuentra. Todas las demás consultas de todas las demás conexiones seguirán siendo registradas. Además, debe tener súper privilegios para que esto funcione.

Otros consejos

Si quieres hacer esto desde el CLI, intente esto, funcionó para mí:

$ mysqldump old_DB | mysql --init-command="SET SQL_LOG_BIN = 0;" new_DB

Posible que el parámetro "init-command" se agregara en una versión más nueva de MySQL.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top