Diferencia entre revisiones de «InnoDB»

(Página creada con '{{Ficha Software |nombre= InnoDB |familia= |imagen=Innodb.jpeg‎ |tamaño=60*60 |descripción= Motor de almacenamiento de MySQL |licencia= GNU GPL |web= http://dev.mysql.com/d...')
 
m (Texto reemplazado: «<div align = "justify">» por «»)
 
(No se muestran 5 ediciones intermedias de otro usuario)
Línea 3: Línea 3:
 
|familia=
 
|familia=
 
|imagen=Innodb.jpeg‎  
 
|imagen=Innodb.jpeg‎  
|tamaño=60*60
+
|tamaño=
|descripción= Motor de almacenamiento de MySQL
+
|descripción= Motor de almacenamiento de [[MySQL]]
|licencia= GNU GPL
+
|licencia= [[GNU]], [[GPL]]
|web= http://dev.mysql.com/doc/refman/5.0/es/ innodb.html
+
|web= [http://dev.mysql.com/doc/refman/5.0/es/ InnoDB]
 
}}
 
}}
<div align = "justify">
+
 
'''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.  
+
 
 +
'''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==
 
==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
+
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.  
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 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.  
Línea 19: Línea 19:
 
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]].  
 
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.  
+
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]].
+
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.  
+
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 ==
 
== 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.  
 
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).  
 
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.  
+
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 [[mysqld]] 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 (';'):  
+
 
 +
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
 
innodb_data_file_path=espec_fichero_datos1
 
 
[;espec_fichero_datos2]...
 
[;espec_fichero_datos2]...
  
Línea 40: Línea 39:
  
 
===Windows===
 
===Windows===
 
 
Las reglas para ficheros de opciones en Windows son las siguientes:  
 
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.  
 
* 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.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:  
 
* 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:  
  
Línea 52: Línea 47:
  
 
windir=C:\WINNT
 
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 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.
* 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===
 
===Unix===
 
+
En Unix, MysQL lee las opciones en los siguientes ficheros, si existen, en el siguiente orden:  
En [[Unix]], [[mysqld]] lee las opciones en los siguientes ficheros, si existen, en el siguiente orden:  
 
  
 
/etc/my.cnf  
 
/etc/my.cnf  
  
* Opciones globales.
+
===Opciones globales===
 
+
* $MYSQL_HOME/my.cnf  
$MYSQL_HOME/my.cnf  
 
 
 
 
* Opciones específicas del servidor.  
 
* Opciones específicas del servidor.  
 
 
defaults-extra-file  
 
defaults-extra-file  
 
 
* El fichero especificado con la opción --defaults-extra-file.  
 
* El fichero especificado con la opción --defaults-extra-file.  
  
 
/.my.cnf  
 
/.my.cnf  
  
* Opciones específicas del usuario:
+
===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.  
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:  
 
 
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
 
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.  
+
==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.  
+
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==
 
==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:  
 
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.  
 
* 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 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.  
 
 
* 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.  
 
* 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.  
 
* 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.  
 
* 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.  
+
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 ==
 
== 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.
  
[[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:  
 
 
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.  
 
* 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 de datos (ficheros ibdata e .ibd) en un lugar seguro.
 
 
* Copiar todos los ficheros ib_logfile 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 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.  
 
* 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.  
+
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==
 
==Fuente==
 
+
* Artículo [http://dev.mysql.com/doc/refman/5.0/es/innodb.html El motor de almacenamiento InnoDB]. Disponible en: “dev.mysql.com”. Consultado el 20 de noviembre del 2011
* Manual de MySQL 5.0 [http://dev.mysql.com/doc/refman/5.0/es/innodb.html El motor de almacenamiento InnoDB]. Disponible en: “dev.mysql.com”. Consultado el 20 de noviembre del 2011
+
* Artículo [http://dev.mysql.com/doc/refman/5.1/en/myisam-storage-engine.html Motor de almacenamiento InnoDB]. Disponible en: “dev.mysql.com”. Consultado el 21 de noviembre del 2011
 
 
* Manual de MySQL 5.1 (inglés)[http://dev.mysql.com/doc/refman/5.1/en/myisam-storage-engine.html Motor de almacenamiento InnoDB]. Disponible en: “dev.mysql.com”. Consultado el 21 de noviembre del 2011
 
 
 
 
* Artículo [http://www.webtaller.com/construccion/lenguajes/mysql/lecciones/tipos_tablas_usadas_mysql.php Tipos de tablas usadas por MySQL]. Disponible en: “webtaller.com”. Consultado el 20 de noviembre del 2011
 
* Artículo [http://www.webtaller.com/construccion/lenguajes/mysql/lecciones/tipos_tablas_usadas_mysql.php Tipos de tablas usadas por MySQL]. Disponible en: “webtaller.com”. Consultado el 20 de noviembre del 2011
  
[[Category:Ciencias_informáticas]] [[Category: Bases_de_datos]]
+
[[Category:Ciencias_informáticas]] [[Category:Bases_de_datos]]

última versión al 15:59 15 jul 2019

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