Saltar al contenido

¿Cómo cambiar de forma segura la variable innodb de MySQL ‘innodb_log_file_size’?

Ya no tienes que indagar más en otras webs porque llegaste al lugar correcto, tenemos la solución que deseas y sin liarte.

Solución:

Sí, es seguro eliminar el archivo de registro una vez que se ha cerrado mysqld

A la luz de esto, simplemente realice los siguientes pasos:

mysql -uroot -p... -e"SET GLOBAL innodb_fast_shutdown = 0"
service mysql stop
mv /var/lib/mysql/ib_logfile[01] /tmp
service mysql start

Al iniciar mysqld se volverá a crear ib_logfile0 y ib_logfile1

Darle una oportunidad !!!

ACTUALIZACIÓN 2011-10-20 16:40 EDT

Pagina limpiamente todos los datos en el grupo de búfer de InnoDB antes de rehacer los archivos de registro, debe configurar esta opción aproximadamente 1 hora antes del apagado:

SET GLOBAL innodb_max_dirty_pages_pct = 0;

Por defecto, innodb_max_dirty_pages_pct es 75 (MySQL 5.5+) o 90 (antes de MySQL 5.5). Establecer esto en cero mantiene el número de páginas sucias por debajo del 1% del grupo de búfer de InnoDB. Ejecutando service mysql stop hace esto de todos modos. Además, un apagado terminará con los elementos restantes en el registro de rehacer. Para mantener esta opción, simplemente agréguela a /etc/my.cnf:

[mysqld]
innodb_max_dirty_pages_pct = 0

ACTUALIZACIÓN 2013-04-19 16:16 EDT

Actualicé mi respuesta un poco más con innodb_fast_shutdown porque solía reiniciar mysql y detener mysql para hacer esto. Ahora, este paso es vital porque cada transacción no comprometida puede tener otras partes móviles dentro y fuera de los registros de transacciones de InnoDB (Ver Infraestructura InnoDB).

Tenga en cuenta que la configuración innodb_fast_shutdown to 2 limpiaría los registros también, pero aún existen más partes móviles y se eligen en Crash Recovery durante el inicio de mysqld. El ajuste de 0 es el mejor.

En cambio, recomendaría el método oficial, que reproduzco aquí por conveniencia:

Para cambiar el número o el tamaño de los archivos de registro de InnoDB en MySQL 5.6.7 o anterior, utilice las siguientes instrucciones. El procedimiento a utilizar depende del valor de innodb_fast_shutdown, que determina si se debe actualizar completamente el espacio de tabla del sistema antes de una operación de apagado:

  • Si innodb_fast_shutdown no está configurado en 2: Detenga el servidor MySQL y asegúrese de que se apague sin errores, para asegurarse de que no haya información de transacciones pendientes en el registro de rehacer. Copie los archivos de registro de rehacer antiguos en un lugar seguro, en caso de que algo saliera mal durante el cierre y los necesite para recuperar el espacio de tabla. Elimine los archivos de registro antiguos del directorio de archivos de registro, edite my.cnf para cambiar la configuración del archivo de registro y vuelva a iniciar el servidor MySQL. mysqld ve que no existen archivos de registro de InnoDB al inicio y crea otros nuevos.

  • Si innodb_fast_shutdown se establece en 2: Establezca innodb_fast_shutdown en 1:

mysql> SET GLOBAL innodb_fast_shutdown = 1;

Luego siga las instrucciones del ítem anterior.

A partir de MySQL 5.6.8, la configuración innodb_fast_shutdown ya no es relevante al cambiar el número o el tamaño de los archivos de registro de InnoDB. Además, ya no es necesario que elimine los archivos de registro antiguos, aunque es posible que desee copiar los archivos de registro antiguos en un lugar seguro, como copia de seguridad. Para cambiar el número o el tamaño de los archivos de registro de InnoDB, realice los siguientes pasos:

  1. Detenga el servidor MySQL y asegúrese de que se apague sin errores.

  2. Edite my.cnf para cambiar la configuración del archivo de registro. Para cambiar el tamaño del archivo de registro, configure innodb_log_file_size. Para aumentar la cantidad de archivos de registro, configure innodb_log_files_in_group.

  3. Inicie el servidor MySQL nuevamente.

Si InnoDB detecta que innodb_log_file_size difiere del tamaño del archivo de registro de rehacer, escribirá un punto de control de registro, cerrará y eliminará los archivos de registro antiguos, creará nuevos archivos de registro con el tamaño solicitado y abrirá los nuevos archivos de registro.

innodb_buffer_pool_size – simplemente cambia my.cnf (my.ini) y reinicie mysqld.

innodb_log_file_size es menos crítico. No lo cambie a menos que haya una razón para hacerlo. Roland proporcionó los pasos, pero un aspecto me preocupa … No sé si los dos primeros pasos son importantes; parece que podrían ser:

  1. set innodb_fast_shutdown = OFF
  2. reiniciar mysql
  3. detener mysql
  4. eliminar los archivos de registro
  5. iniciar mysql

Los archivos de registro realizan un seguimiento de los asuntos pendientes; “innodb_fast_shutdown“dice lidiar con esas cosas después reiniciando. Entonces, ¿eliminar los archivos puede perder información?

Las nuevas versiones han mejorado cosas: (más discusión en Comentarios)

  • 5.6 Permite innodb_log_file_size > 4GB
  • 5,6 innodb_log_file_size se puede cambiar sin quitar primero iblog *
  • 5.7 permite cambiar el tamaño dinámicamente innodb_buffer_pool_size

¿Debo cambiar log_file_size?

Usar GLOBAL STATUS para calcular el número de minutos antes de los ciclos de registro.

Uptime / 60 * innodb_log_file_size / Innodb_os_log_written`

Si es mucho menos de 60 (minutos), entonces podría ayudar aumentar log_file_size. Si es mucho más, los archivos de registro están desperdiciando espacio en disco. Esa “1 hora” es bastante arbitraria, por lo que si está cerca de ella, no se moleste en cambiar log_file_size.

Salir innodb_log_files_in_group por defecto de 2.

Te mostramos comentarios y puntuaciones

Más adelante puedes encontrar las notas de otros administradores, tú igualmente tienes la opción de mostrar el tuyo si te gusta.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *