InnoDB

InnoDB
Información sobre la plantilla
Innodb.jpeg
Motor de almacenamiento de MySQL
LicenciaGNU, GPL
Sitio web
InnoDB

InnoDB. Brinda a MySQL un motor de almacenamiento transaccional (conforme a ACID) con capacidades de commit (confirmación), rollback (cancelación) y recuperación de fallas.

Características

InnoDB realiza bloqueos a nivel de fila y también porporciona funciones de lectura consistente sin bloqueo al estilo Oracle en sentencias SELECT. Estas características incrementan el rendimiento y la capacidad de gestionar múltiples usuarios simultáneos. No se necesita un bloqueo escalado en InnoDB porque los bloqueos a nivel de fila ocupan muy poco espacio.

InnoDB también soporta restricciones FOREIGN KEY. En consultas SQL, aún dentro de la misma consulta, pueden incluirse libremente tablas del tipo InnoDB con tablas de otros tipos.

InnoDB se diseñó para obtener el máximo rendimiento al procesar grandes volúmenes de datos. Probablemente ningún otro motor de bases de datos relacionales en disco iguale su eficiencia en el uso de CPU.

A pesar de estar totalmente integrado con el servidor MySQL, el motor de almacenamiento InnoDB mantiene su propio pool de almacenamiento intermedio para tener un caché de datos e índices en la memoria principal. InnoDB almacena sus tablas e índices en un espacio de tablas, el cual puede consistir de varios ficheros (o particiones disco). Esto difiere por ejemplo, en el motor MyISAM, donde cada tabla se almacena empleando ficheros separados, las tablas InnoDB pueden ser de cualquier tamaño, aún en sistemas operativos donde el tamaño de los ficheros se limita a 2GB.

En MySQL 5.0, InnoDB viene incluido por defecto en las distribuciones binarias. El instalador Windows Essentials configura a InnoDB como el tipo de base de datos MySQL por defecto en Windows.

InnoDB se utiliza en muchos grandes sitios de bases de datos que necesitan alto rendimiento. El famoso sitio de noticias de Internet Slashdot.org corre sobre InnoDB. Mytrix, Inc. almacena más de 1TB de datos en InnoDB, y otros sitios manejan una carga promedio de 800 inserciones y actualizaciones por segundo en InnoDB.

Configuración

En MySQL 5.0, el motor de almacenamiento InnoDB está habilitado por defecto. Si no se desean emplear tablas InnoDB, puede agregarse la opción skip-innodb al fichero de opciones de MySQL.

Dos recursos basados en disco muy importantes que gestiona el motor de almacenamiento InnoDB son sus ficheros de datos de espacios de tablas y sus ficheros de registro (log). Si no se especifican opciones de configuración para InnoDB, MySQL 5.0 crea en el directorio de datos de MySQL un fichero de datos de 10MB (autoextensible) llamado ibdata1 y dos ficheros de registro (log) de 5MB llamados ib_logfile0 y ib_logfile1.

Para configurar los ficheros de espacio de tablas de InnoDB, debe utilizarse la opción innodb_data_file_path en la sección MySQL del fichero de opciones my.cnf. En Windows, se puede emplear en su lugar my.ini. El valor de innodb_data_file_path debería ser una lista de una o más especificaciones de ficheros. Si se incluirá más de un fichero de datos, habrá que separarlos con punto y coma (';'):

innodb_data_file_path=espec_fichero_datos1 [;espec_fichero_datos2]...

Cuando se crea un espacio de tablas InnoDB por primera vez, es mejor iniciar el servidor MySQL desde la línea de comandos. Entonces, InnoDB imprimirá en pantalla la información acerca de la creación de bases de datos, de forma que se podrá ver lo que está ocurriendo.

Windows

Las reglas para ficheros de opciones en Windows son las siguientes:

  • Solo debe crearse el fichero my.cnf o my.ini, pero no los dos.
  • El fichero my.cnf debe colocarse en el directorio raíz de la unidad C.
  • El fichero my.ini debería colocarse en el directorio WINDIR; por ejemplo, C:\WINDOWS o C:\WINNT. Puede utilizarse el comando SET en una ventana de consola para mostrar el valor de WINDIR:

C:\> SET WINDIR

windir=C:\WINNT

  • Si el ordenador emplea un gestor de arranque donde la unidad C: no es la unidad de arranque, sólo es posible emplear el fichero my.ini.
  • Si se instaló MySQL empleando los asistentes de instalación y configuración, el fichero my.ini se ubica en el directorio de instalación de MySQL.

Unix

En Unix, MysQL lee las opciones en los siguientes ficheros, si existen, en el siguiente orden:

/etc/my.cnf

Opciones globales

  • $MYSQL_HOME/my.cnf
  • Opciones específicas del servidor.

defaults-extra-file

  • El fichero especificado con la opción --defaults-extra-file.

/.my.cnf

Opciones específicas del usuario

  • MYSQL_HOME representa una variable de entorno la cual contiene la ruta al directorio que hospeda al fichero específico de servidor my.cnf.
  • Si se desea estar seguro de que mysqld lee sus opciones únicamente desde un fichero determinado, se puede emplear --defaults-option como la primera opción en la línea de comandos cuando se inicia el servidor:

mysqld --defaults-file=ruta_a_my_cnf

Crear el espacio de tablas

Suponiendo que se ha instalado MySQL y se editó el fichero de opciones para que contenga los parámetros de InnoDB necesarios, antes de iniciar MySQL se debería verificar que los directorios indicados para los ficheros de datos y de registro (log) InnoDB existen y que el servidor MySQL tiene permisos de acceso a dichos directorios. InnoDB no puede crear directorios, solamente ficheros. Hay que verificar también que se tiene suficiente espacio en disco para los ficheros de datos y de registro.

Cuando se crea una base de datos InnoDB, es mejor ejecutar el servidor MySQL, mysqld desde la línea de comandos, no desde el envoltorio mysqld_safe o como un servicio de Windows. Cuando se lo ejecuta desde la línea de comandos, se puede ver lo que mysqld imprime y qué está ocurriendo. En Unix, simplemente debe invocarse mysqld. En Windows, hay que usar la opción console.

Resolución de problemas en la inicialización

Si InnoDB imprime un error de sistema operativo en una operación de ficheros, generalmente el problema es uno de los siguientes:

  • No se creó el directorio para los ficheros de datos o de registros (log) de InnoDB.
  • MysQLd no tiene los permisos de acceso para crear ficheros en aquellos directorios.
  • MysQLd no puede leer el fichero de opciones my.cnf o my.ini adecuado, y por lo tanto no ve las opciones especificadas.
  • El disco está lleno o se excedió la cuota de disco.
  • Se ha creado un subdirectorio que tiene el mismo nombre que uno de los ficheros de datos especificados.
  • Hay un error de sintaxis en innodb_data_home_dir o innodb_data_file_path.

Si algo va mal durante el intento de InnoDB de inicializar el espacio de tablas o los ficheros de registro, se deberán borrar todos los ficheros creados por InnoDB. Esto comprende todos los ficheros ibdata y todos los ib_logfile. En caso de haber creado alguna tabla InnoDB, habrá que borrar del directorio de datos de MySQL los correspondientes ficheros .frm de estas tablas (y cualquier fichero ibd si se están empleando múltiples espacios de tablas). Entonces puede intentarse nuevamente la creación de la base de datos InnoDB. Es mejor iniciar el servidor MySQL desde una línea de comandos de modo que pueda verse lo que ocurre.

Hacer una copia de seguridad y recuperar una base de datos

InnoDB Hot Backup es una herramienta de respaldo en línea que puede utilizarse para respaldar la base de datos InnoDB mientras ésta se está ejecutando. InnoDB Hot Backup no necesita que se detenga la base de datos y no establece ningún bloqueo ni dificulta el normal procesamiento de la base de datos.

Si se está en condiciones de detener el servidor MySQL, puede realizarse una copia de respaldo binaria, que consiste en todos los ficheros usados por InnoDB para administrar sus tablas. Se utiliza el siguiente procedimiento:

  • Detener el servidor MySQL y asegurarse de que lo hace sin errores.
  • Copiar todos los ficheros de datos (ficheros ibdata e .ibd) en un lugar seguro.
  • Copiar todos los ficheros ib_logfile en un lugar seguro.
  • Copiar el o los ficheros de configuración my.cnf en un lugar seguro.
  • Copiar todos los ficheros .frm de las tablas InnoDB en un lugar seguro.

La replicación funciona con tablas InnoDB, de forma que puede emplearse para mantener una copia de la base de datos en sitios de bases de datos que necesiten alta disponibilidad.

Fuente