DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(mysql.info) multiple-tablespaces

Info Catalog (mysql.info) innodb-configuration (mysql.info) innodb-configuration (mysql.info) innodb-raw-devices
 
 14.2.3.1 Using Per-Table Tablespaces
 ....................................
 
 You can store each `InnoDB' table and its indexes in its own file. This
 feature is called `multiple tablespaces' because in effect each table
 has its own tablespace.
 
 Using multiple tablespaces can be beneficial to users who want to move
 specific tables to separate physical disks or who wish to restore
 backups of single tables quickly without interrupting the use of the
 remaining `InnoDB' tables.
 
 You can enable multiple tablespaces by adding this line to the
 `[mysqld]' section of `my.cnf':
 
      [mysqld]
      innodb_file_per_table
 
 After restarting the server, `InnoDB' stores each newly created table
 into its own file `TBL_NAME.ibd' in the database directory where the
 table belongs. This is similar to what the `MyISAM' storage engine
 does, but `MyISAM' divides the table into a data file `TBL_NAME.MYD' and
 the index file `TBL_NAME.MYI'.  For `InnoDB', the data and the indexes
 are stored together in the `.ibd' file. The `TBL_NAME.frm' file is
 still created as usual.
 
 If you remove the `innodb_file_per_table' line from `my.cnf' and
 restart the server, `InnoDB' creates tables inside the shared
 tablespace files again.
 
 `innodb_file_per_table' affects only table creation, not access to
 existing tables. If you start the server with this option, new tables
 are created using `.ibd' files, but you can still access tables that
 exist in the shared tablespace. If you remove the option and restart
 the server, new tables are created in the shared tablespace, but you
 can still access any tables that were created using multiple
 tablespaces.
 
 `InnoDB' always needs the shared tablespace because it puts its
 internal data dictionary and undo logs there. The `.ibd' files are not
 sufficient for `InnoDB' to operate.
 
 * You cannot freely move `.ibd' files between database
 directories as you can with `MyISAM' table files. This is because the
 table definition that is stored in the `InnoDB' shared tablespace
 includes the database name, and because `InnoDB' must preserve the
 consistency of transaction IDs and log sequence numbers.
 
 To move an `.ibd' file and the associated table from one database to
 another, use a `RENAME TABLE' statement:
 
      RENAME TABLE DB1.TBL_NAME TO DB2.TBL_NAME;
 
 If you have a `clean' backup of an `.ibd' file, you can restore it to
 the MySQL installation from which it originated as follows:
 
   1. Issue this `ALTER TABLE' statement:
 
           ALTER TABLE TBL_NAME DISCARD TABLESPACE;
 
      *Caution*: This statement deletes the current `.ibd' file.
 
   2. Put the backup `.ibd' file back in the proper database directory.
 
   3. Issue this `ALTER TABLE' statement:
 
           ALTER TABLE TBL_NAME IMPORT TABLESPACE;
 
 In this context, a `clean' `.ibd' file backup means:
 
    * There are no uncommitted modifications by transactions in the
      `.ibd' file.
 
    * There are no unmerged insert buffer entries in the `.ibd' file.
 
    * Purge has removed all delete-marked index records from the `.ibd'
      file.
 
    * `mysqld' has flushed all modified pages of the `.ibd' file from
      the buffer pool to the file.
 
 You can make a clean backup `.ibd' file using the following method:
 
   1. Stop all activity from the `mysqld' server and commit all
      transactions.
 
   2. Wait until `SHOW ENGINE INNODB STATUS' shows that there are no
      active transactions in the database, and the main thread status of
      `InnoDB' is `Waiting for server activity'. Then you can make a
      copy of the `.ibd' file.
 
 Another method for making a clean copy of an `.ibd' file is to use the
 commercial `InnoDB Hot Backup' tool:
 
   1. Use `InnoDB Hot Backup' to back up the `InnoDB' installation.
 
   2. Start a second `mysqld' server on the backup and let it clean up
      the `.ibd' files in the backup.
 
Info Catalog (mysql.info) innodb-configuration (mysql.info) innodb-configuration (mysql.info) innodb-raw-devices
automatically generated byinfo2html