Configurando InnoDB en MySQL

A continuación veremos cómo habilitar/deshabilitar InnoDB en MySQL y un ejemplo de configuración de InnoDB.

Habilitar InnoDB

En MySQL el motor de almacenamiento InnoDB está habilitado por defecto. Si no se desean emplear tablas InnoDB, agregamos la opción "skip-innodb" al fichero "my.cnf":

vi /etc/mysql/my.cnf
skip-innodb


Levantamos el servicio MySQL y desde la consola chequeamos que ya no soportamos INNODB:

SHOW VARIABLES LIKE '%have_innodb%';
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| have_innodb | NO |
+---------------+-------+
1 row in set (0.00 sec)


Configuración InnoDB

A continuación mostraremos un ejemplo de configuración de MySQL utilizando el motor InnoDB y explicaremos los parámetros más importantes:

grep innodb /etc/mysql/my.cnf
# innodb
innodb_file_per_table
innodb_data_home_dir = /var/lib/mysql/data
innodb_data_file_path = ibdata1:100M:autoextend
innodb_buffer_pool_size = 5000M
innodb_additional_mem_pool_size = 10M
innodb_log_group_home_dir = /var/lib/mysql/iblogs
innodb_log_files_in_group = 4
innodb_log_file_size = 1023M
innodb_log_buffer_size = 32M
innodb_flush_log_at_trx_commit = 0
innodb_flush_method = O_DIRECT
innodb_thread_concurrency = 0
innodb_purge_threads = 1
innodb_io_capacity = 2000
innodb_read_io_threads = 16
innodb_write_io_threads = 16

 

  • innodb_file_per_table
    Especifica que se almacene cada tabla en un fichero diferente.

  • innodb_data_home_dir = /var/lib/mysql/data
    Directorio donde se guarda la información de las tablas (estructura y datos).

  • innodb_data_file_path = lbdata1:100M:autoextend:max:500M
    Configuramos los ficheros de espacio de tablas de InnoDB. Esto configura un único fichero "lbdata1" de 100MB y autoextensible con un máximo de 500M. También podríamos utilizar más de un fichero de la siguiente manera:

    innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend

  • innodb_buffer_pool_size = 5000M

    Establecemos el tamaño del buffer en un 50-80% de la memoria del ordenador.

  • innodb_log_group_home_dir = /var/lib/mysql/iblogs
    Directorio donde se guardarán los ficheros log.