Pregunta InnoDB: Error: el archivo de registro ./ib_logfile0 es de diferente tamaño


Acabo de agregar las siguientes líneas en /etc/mysql/my.cnf después de haber convertido una base de datos para usar el motor InnoDB.

innodb_buffer_pool_size = 2560M
innodb_log_file_size    = 256M
innodb_log_buffer_size  = 8M
innodb_flush_log_at_trx_commit  = 2
innodb_thread_concurrency   = 16
innodb_flush_method = O_DIRECT

Pero levanta el mensaje "ERROR 2013 (HY000) en la línea 2: se perdió la conexión al servidor MySQL durante la consulta" error al reiniciar mysqld. Y el registro de errores de mysql muestra lo siguiente

InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!
100118 20:52:52 [ERROR] Plugin 'InnoDB' init function returned error.
100118 20:52:52 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
100118 20:52:52 [ERROR] Unknown/unsupported table type: InnoDB
100118 20:52:52 [ERROR] Aborting

Así que comenté esta línea

# innodb_log_file_size  = 256M

Y reinició mysql con éxito.

Me pregunto qué se muestra en el error de mysql "5242880 bytes del archivo de registro". Es la primera base de datos en el motor InnoDB en este servidor, así que ¿cuándo y dónde se crea ese archivo de registro? En este caso, ¿cómo puedo habilitar la directiva innodb_log_file_size en my.cnf?

EDITAR

Intenté eliminar / var / lib / mysql / ib_logfile0 y reiniciar mysqld pero todavía falla. Ahora muestra lo siguiente en el registro de errores.

100118 21:27:11  InnoDB: Log file ./ib_logfile0 did not exist: new to be created
InnoDB: Setting log file ./ib_logfile0 size to 256 MB
InnoDB: Database physically writes the file full: wait...
InnoDB: Progress in MB: 100 200
InnoDB: Error: log file ./ib_logfile1 is of different size 0 5242880 bytes
InnoDB: than specified in the .cnf file 0 268435456 bytes!

Resolución

Funciona ahora después de eliminar tanto ib_logfile0 como ib_logfile1 en / var / lib / mysql


101
2018-01-19 03:02


origen




Respuestas:


InnoDB es increíblemente exigente con su configuración; si algo no está bien, simplemente se dará por vencido y se irá a casa. Para realizar un cambio en el tamaño del archivo de registro sin pérdida de datos:

  1. Revertir cualquier cambio de configuración que haya hecho al tamaño del archivo de registro e iniciar MySQL nuevamente.
  2. En su ejecución de MySQL: SET GLOBAL innodb_fast_shutdown= 0;
  3. Detener MySQL
  4. Realice el cambio de configuración al tamaño del archivo de registro.
  5. Eliminar ambos archivos de registro.
  6. Iniciar MySQL. Se quejará de la falta de archivos de registro, pero los creará y todo estará bien.

114
2018-01-19 03:06



Hola, gracias por tu respuesta, probé tu método pero aun así fracasé. - jack
Eliminar tanto ib_logfile0 como ib_logfile1 solucionó el problema por mí. - Temnovit
Y para mí. Muchas gracias, tenemos nuestro wiki de vuelta! - Stephen Kennedy
Ya que estoy reubicando una base de datos recién instalada, me salto el paso 1-4 y comienzo con 5, y funciona :) - Limbo Peng
Gracias, @Temnovit al eliminar estos 2 archivos también me sirvió. - bashan