Estoy siguiendo esta solución aquí /programming/3927690/howto-clean-a-mysql-innodb-storage-engine/4056261#comment14041132_4056261 e intenté aumentar mi innodb_buffer_pool_size
a 4G y más tarde 1G (también 1024M) en Además del tamaño del archivo de registro, pero mysql no comenzará con esos valores. Si lo devuelvo a 512M, mysql comienza bien.
¿Como puedo resolver esto? Mi servidor es de 16 GB y, según Webmin sysinfo:
Real memory 15.62 GB total, 3.13 GB used
Mientras tanto, también encontré el registro de errores:
120529 10:29:32 mysqld_safe mysqld del archivo pid /var/run/mysqld/mysqld.pid finalizó
120529 10:29:33 mysqld_safe Iniciar mysqld daemon con bases de datos desde / var / lib / mysql
120529 10:29:33 [Nota] El complemento 'FEDERADO' está deshabilitado.
120529 10:29:33 InnoDB: el montón de memoria InnoDB está deshabilitado
120529 10:29:33 InnoDB: Mutexes y rw_locks usan componentes atómicos GCC
120529 10:29:33 InnoDB: las tablas comprimidas usan zlib 1.2.3
120529 10:29:33 InnoDB: Uso de AIO nativo de Linux
120529 10:29:33 InnoDB: Inicializando agrupación de almacenamiento intermedio, tamaño = 1.0G
120529 10:29:33 InnoDB: inicialización completada de la agrupación de almacenamiento intermedio
InnoDB: Error: el archivo de registro ./ib_logfile0 es de diferente tamaño 0 134217728 bytes
InnoDB: que el especificado en el archivo .cnf 0 268435456 bytes!
Respuestas:
Las dos respuestas de @RickJames y @drogart son esencialmente los remedios. (+1 para cada uno).
Desde el registro de errores que presenta, las dos últimas líneas dicen:
En ese momento, era evidente que configuró innodb_log_file_size en 256M (268435456)
my.cnf
mientras que los InnoDB Transaction Logs (ib_logfile0
,ib_logfile1
) eran respectivamente 128M (134217728) cada uno. Mirando hacia atrás en el enlace a mi respuesta de StackOverflow en su pregunta, tuvo que hacer lo siguiente:Paso 01) Agregue esto a
my.cnf
:Paso 02) Ejecuta estos comandos en el sistema operativo
Para tener confianza en lo que está sucediendo, ejecute
tail -f
contra el registro de errores. Verá un mensaje que le indica cuándo se crea cada archivo de registro innodb.fuente
service mysqld stop
.Según el error en el registro, supongo que hiciste esto:
Si cambia el tamaño del archivo de registro, debe eliminar los archivos de registro antiguos. Innodb no se iniciará correctamente si los archivos existentes no coinciden con el tamaño especificado en el archivo de configuración. Si los mueve a otro lugar, innodb creará nuevos archivos de registro de transacciones del tamaño correcto cuando se inicie.
Recomendaría mover los archivos antiguos a otro directorio en lugar de simplemente eliminarlos, hasta que el servidor esté en funcionamiento con nuevos archivos de registro y todo se vea bien.
fuente
El buffer_pool debe establecerse en aproximadamente el 70% de la RAM disponible si solo está ejecutando InnoDB.
El tamaño del registro no importa mucho. Lo óptimo es configurarlo de modo que (Uptime * innodb_log_file_size / Innodb_os_log_written) sea aproximadamente 3600 (1 hora).
Para cambiar el tamaño del registro, uno debe
fuente
También puede haber algún problema en el valor proporcionado para el tamaño de la agrupación de almacenamiento intermedio . como sucedió en mi caso ...
Al aumentar o disminuir
innodb_buffer_pool_size
, la operación se realiza en trozos. El tamaño del fragmento se define mediante lainnodb_buffer_pool_chunk_size
opción de configuración, que tiene un valor predeterminado de 128M. Para obtener más información, consulte Configuración del tamaño de fragmento de InnoDB Buffer Pool .El tamaño de la agrupación de almacenamiento intermedio siempre debe ser igual o múltiplo de
innodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
. Si configurainnodb_buffer_pool_size
un valor que no es igual o un múltiplo deinnodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
, el tamaño de la agrupación de almacenamiento intermedio se ajusta automáticamente a un valor que es igual o un múltiplo deinnodb_buffer_pool_chunk_size * innodb_buffer_pool_instances
ese valor no es menor que el tamaño de la agrupación de almacenamiento intermedio especificado.En el ejemplo,
innodb_buffer_pool_size
se establece en 8G yinnodb_buffer_pool_instances
en 16.innodb_buffer_pool_chunk_size
es 128M, que es el valor predeterminado.8G es un
innodb_buffer_pool_size
valor válido porque 8G es un múltiplo deinnodb_buffer_pool_instances=16 * innodb_buffer_pool_chunk_size=128M
, que es 2G.fuente