Inicio > MYSQL > Optimizar innodb

OPTIMIZAR INNODB

20/12/2016MYSQL

 

Buscoando información sobre MySQL en internet me he encontrado con varios posts de como optimizar MySQL cuando se usan bases de datos con motor de almacenamiento InnoDB.
Cuando se instala MySQL no se suele modificar la configuración de como almacena los datos en motor InnoDB. En cambio los datos de tablas que utilizan el motor MyISAM se almacenan como ficheros independientes.
Volvamos aInnoDB, por defecto toda la información se almacena en un solo datafile, que normalmente se llama ibdata1 (en terminología de InnoDB es un tablespace).Haciendo que este fichero aumente de tamaño cuando se creen bases de datos nuevas y se vayan guardando datos y una corrupción en ibdata1 implica la restauración de todas las tablas de todas las BD que usen InnoDB siendo bastante arriesgado. Además, cuando se elimina una tabla o una base de datos, el espacio que ocupaban en el fichero ibdata1 no se recupera el espacio que ocupaba.
Lanzando la query SELECT table_schema,table_name FROM information_schema.tables WHERE table_schema NOT IN ('information_schema','performance_schema','mysql') and engine='InnoDB'; obtenemos las tablas que tienen el motor InnoDB. Si queremos seguir utilizando el motor InnoDB, tenemos que cambiar la configuración del servidor MySQL teniendo que borrar las bases de datos que usan el motor InnoDB. Este cambio de configuración tiene ciertos riesgos, asi que tendremos que hacer backups de las bases de datos o realizar snapshots de las bases de datos.
Después de hacer los backups necesarios se borran las bases de datos, terminar con las posibles transacciones, que se puedan estar ejecutando, con el comando SET GLOBAL innodb_fast_shutdown = 0 después de ejecutar el comando anterior se tiene que parar el servicio de MySQL y borramos Borrar los ficheros de espacio de tabla (si, borramos el fichero ibdata1) y logs.
Cuando se ha hecho todo lo anterior hay que editar el fichero de configuración de MySQL (my.cnf) para añañir la nueva configuración:

[mysqld]
innodb_file_per_table

Después de todo ésto volvar las copias de seguridad de las bases de datos y arrancer el servicio de MySQL.
Como ésto es muy delicado se aconseja fervientemente hacer copias de seguridad de todo lo que implique este cambio de configuración.