En MySQL 5.0, se puede almacenar cada tabla
        InnoDB y sus índices en su propio fichero.
        Esta característica se llama “multiple
        tablespaces” (espacios de tablas múltiples) porque, en
        efecto, cada tabla tiene su propio espacio de tablas.
      
El uso de múltiples espacios de tablas puede ser beneficioso para usuarios que desean mover tablas específicas a discos físicos separados o quienes deseen restaurar respaldos de tablas sin interrumpir el uso de las demás tablas InnoDB.
        Se pueden habilitar múltiples espacios de tablas agregando esta
        línea a la sección [mysqld] de
        my.cnf:
      
[mysqld] innodb_file_per_table
        Luego de reiniciar el servidor, InnoDB
        almacenará cada nueva tabla creada en su propio fichero
        nombre_tabla.ibdMyISAM, pero MyISAM divide
        la tabla en un fichero de datos
        tbl_name.MYDtbl_name.MYIInnoDB, los datos y los índices se
        almacenan juntos en el fichero .ibd. El
        fichero
        tbl_name.frm
        Si se quita la línea innodb_file_per_table
        de my.cnf y se reinicia el servidor,
        InnoDB creará nuevamente las tablas dentro
        de los ficheros del espacio de tablas compartido.
      
        innodb_file_per_table afecta solamente la
        creación de tablas. Si se inicia el servidor con esta opción,
        las tablas nuevas se crearán empleando ficheros
        .ibd, pero aún se puede acceder a las
        tablas existentes en el espacio de tablas compartido. Si se
        remueve la opción, las nuevas tablas se crearán en el espacio
        compartido, pero aún se podrá acceder a las tablas creadas en
        espacios de tablas múltiples.
      
        InnoDB siempre necesita del espacio de tablas
        compartido. Los ficheros .ibd no son
        suficientes para que funcione InnoDB. El
        espacio de tablas compartido consiste de los ya conocidos
        ficheros ibdata, donde
        InnoDB coloca su diccionario de datos interno
        y los registros para deshacer cambios (undo logs).
      
        No se puede mover libremente ficheros
        .ibd entre directorios de bases
        de datos en la misma forma en que se hace con ficheros de tablas
        MyISAM. Esto se debe a que la definición de
        las tablas se almacena en el espacio de tablas compartido de
        InnoDB, y también porque
        InnoDB debe preservar la consistencia de los
        identificadores de transacciones y los números de secuencia de
        registros (log).
      
        Dentro de una determinada instalación MySQL, se puede mover un
        fichero .ibd y las tablas asociadas de una
        base de datos a otra con la conocida sentencia RENAME
        TABLE:
      
RENAME TABLEnombre_bd_anterior.nombre_tablaTOnombre_bd_nuevo.nombre_tabla;
        Si se tiene un respaldo “limpio” de un fichero
        .ibd, se lo puede restaurar dentro de la
        instalación MySQL de donde proviene del siguiente modo:
      
            Utilizando esta sentencia ALTER TABLE:
          
ALTER TABLE nombre_tabla DISCARD TABLESPACE;
            Precaución: Esto
            eliminará el actual fichero .ibd.
          
            Colocando el fichero .ibd nuevamente en
            el directorio de la base de datos adecuada.
          
            Utilizando esta sentencia ALTER TABLE:
          
ALTER TABLE nombre_tabla IMPORT TABLESPACE;
        En este contexto, un respaldo “limpio” de un
        fichero .ibd significa:
      
            ç El fichero .ibd no contiene
            modificaciones realizadas por transacciones sin confirmar.
          
            No quedan entradas sin combinar en el buffer de inserciones
            en el fichero .ibd.
          
            Se han quitado todos los registros de índice marcados para
            eliminación en el fichero .ibd.
          
            mysqld ha descargado todas las páginas
            modificadas del fichero .ibd desde el
            buffer pool hacia el fichero.
          
        Se puede realizar un respaldo limpio del fichero
        .ibd con el siguiente método:
      
Detener toda actividad del servidor mysqld y confirmar todas las transacciones.
            Esperar hasta que SHOW INNODB STATUS
            indique que no hay transacciones activas en la base de
            datos, y el estado del subproceso (trhead) principal de
            InnoDB sea Waiting for server
            activity (Esperando por actividad del servidor).
            Entonces, se puede hacer una copia del fichero
            .ibd.
          
        Otro método para hacer una copia limpia de un fichero
        .ibd es utilizar la herramienta comercial
        InnoDB Hot Backup:
      
            Utilizar InnoDB Hot Backup para respaldar
            la instalación InnoDB.
          
            Iniciar un segundo servidor mysqld sobre
            el respaldo y permitirle limpiar los ficheros
            .ibd del mismo.
          
        Figura en la lista de pendientes (TODO) para permitir mover
        ficheros .ibd limpios a otra instalación
        MySQL. Esto necesita que se inicialicen los IDs
        (identificadores) de transacciones y los números de secuencia
        de registros (log) en el fichero .ibd.
      
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

