Esta sección describe lo que se puede hacer cuando el espacio de tablas
InnoDB
se queda sin espacio o cuando se desea cambiar
el tamaño de los ficheros de registro (log).
La manera más sencilla de incrementar el tamaño del espacio de tablas
InnoDB
es configurarlo desde un principio para que sea
autoextensible, especificando el atributo autoextend
para el último fichero de datos en la definición del espacio de tablas.
Entonces, InnoDB
incrementa el tamaño de ese fichero
automáticamente en intervalos de 8MB cuando se queda sin espacio. El
tamaño del intervalo a incrementar puede configurarse estableciendo el
valor de innodb_autoextend_increment
, el cual está
expresado en megabytes, y cuyo valor predeterminado es 8.
Alternativamente, se puede incrementar el tamaño del espacio de tablas
agregando otro fichero de datos. Para hacer esto, se debe detener el
servidor MySQL, editar el fichero my.cnf
para agregar
un nuevo fichero de datos al final de
innodb_data_file_path
, e iniciar nuevamente el
servidor.
Si el último fichero de datos especificado tiene la palabra clave
autoextend
, el procedimiento para editar a
my.cnf
debe tener en cuenta el tamaño que ha
alcanzado este último fichero. Hay que obtener el tamaño del fichero de
datos, redondearlo hacia abajo a la cantidad de megabytes
(1024 * 1024 bytes) más cercana, y especificar este número explícitamente
en innodb_data_file_path
. Entonces se podrá agregar
otro fichero de datos. Hay que recordar que solamente el último fichero de
datos en innodb_data_file_path
puede especificarse como
autoextensible.
Como ejemplo, se asumirá que el espacio de tablas tiene sólo un fichero de
datos autoextensible ibdata1
:
innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:10M:autoextend
Suponiendo que este fichero de datos, a lo largo del tiempo, ha crecido hasta 988MB, debajo se ve la línea de configuración luego de agregar otro fichero de datos autoextensible.
innodb_data_home_dir = innodb_data_file_path = /ibdata/ibdata1:988M;/disk2/ibdata2:50M:autoextend
Cuando se agrega un nuevo fichero al espacio de tablas, hay que asegurarse
de que no exista. InnoDB
crea e inicializa el fichero
al reiniciar el servidor.
Actualmente no es posible quitar un fichero de datos del espacio de tablas. Para reducir el tamaño del espacio de tablas, emplear este procedimiento:
-
Utilizar mysqldump para hacer un volcado de todas las tablas
InnoDB
. -
Detener el servidor.
-
Eliminar todos los ficheros existentes del espacio de tablas.
-
Configurar un nuevo espacio de tablas.
-
Reiniciar el servidor.
-
Importar el fichero de volcado de tablas.
Si se desea modificar la cantidad o tamaño de los ficheros de registro
(log) de InnoDB
, se debe detener el servidor MySQL y
asegurarse de que se cerró sin errores. Luego, copiar los ficheros de
registro antiguos en un lugar seguro, sólo para el caso de que algo haya
fallado en el cierre del servidor y se necesite recuperar el espacio de
tablas. Eliminar los antiguos ficheros de registro del directorio de
ficheros de registro, editar my.cnf
para modificar la
configuración de los ficheros de registro, e iniciar nuevamente el
servidor MySQL. mysqld verá al iniciar que no hay
ficheros de registro e informará que está creando nuevos.