重要: InnoDB-4.1.1 にアップグレードした後に、ダウングレードすることはできません。それは、InnoDB の以前のバージョンが複数のテーブルスペースを認識しないためです。
MySQL-4.1.1 より、各 InnoDB テーブルとそのインデックスを、そのテーブル独自のファイルに格納できるようになりました。各テーブルが独自のテーブルスペースに格納されることから、この機能は複数テーブルスペースと呼ばれます。
          この機能を有効にするには、my.cnf
          の [mysqld]
          セクションに次の行を追加します。
innodb_file_per_table
          これによって InnoDB
          は、各テーブルが属しているデータベースディレクトリ内にあるテーブル固有の
          tablename.ibd
          ファイルに、それぞれのテーブルを格納します。これは
          MyISAM の動作と似ていますが、MyISAM
          ではテーブルがデータファイル
          tablename.MYD
          とインデックスファイル
          tablename.MYI
          に分けられます。InnoDB
          の場合は、データとインデックスの両方が
          .ibd ファイルに格納されます。
        
          my.cnf から行
          innodb_file_per_table
          を削除すると、InnoDB によって再び
          ibdata
          ファイル内にテーブルが作成されます。4.1.1
          以降のバージョンへアップグレードする前に
          ibdata
          ファイルに格納されていた古いテーブルはそのまま残され、.ibd
          ファイルに変換されることはありません。
        
          InnoDB
          にはシステムテーブルスペースが必要で、.ibd
          ファイルだけでは不十分です。
          システムテーブルスペースは、これまで使われていた
          ibdata
          ファイルで構成されます。InnoDB
          は、内部データディクショナリと UNDO
          ログをシステムテーブルスペースに配置します。
        
MyISAM テーブルとは異なり、.ibd ファイルは自由に移動できません。これは、テーブル定義が InnoDB システムテーブルスペースに格納されているためと、InnoDB でトランザクション ID とログシーケンス番号の整合性を維持する必要があるためです。
          従来の RENAME
          コマンドを使って、.ibd
          ファイルと関連テーブルを、あるデータベースから同じ
          MySQL/InnoDB
          インストール内にある別のデータベースに移すことができます。
RENAME TABLE olddatabasename.tablename TO newdatabasename.tablename;
          同じ MySQL/InnoDB インストールから取得した
          .ibd
          ファイルのクリーンバックアップがある場合は、次のコマンドでそのバックアップを
          InnoDB データベースにリストアできます。
ALTER TABLE tablename DISCARD TABLESPACE; /* CAUTION: 現在の .ibd ファイルを削除します! */ <バックアップした .ibd ファイルを適切な場所に置きます> ALTER TABLE tablename IMPORT TABLESPACE;
ここでのクリーンとは、次のことを意味しています。
              .ibd
              ファイル内に、トランザクションが実行してコミットされていない変更がない。
            
              .ibd
              ファイルにマージされていない挿入バッファエントリがない。
            
              削除マークされたすべてのインデックスレコードが
              .ibd
              ファイルから削除されている。
            
              mysqld
              によって、.ibd
              ファイルの変更されたすべてのページがバッファプールからファイルにフラッシュされている。
            
          このような .ibd
          ファイルのクリーンバックアップは、次の方法で作成できます。
        
              mysqld
              サーバのすべての活動を停止し、すべてのトランザクションをコミットする。
            
              SHOW INNODB STATUS
              文でデータベースにアクティブなトランザクションがないことが示され、InnoDB
              のメインスレッドが Waiting for server
              activity
              になるのを待つ。これで、.ibd
              ファイルのコピーを作成できる。
            
          クリーンな .ibd
          ファイルを作成するもう 1
          つの方法(有償)があります。
        
InnoDB ホットバックアップを使用して InnoDB のデータをバックアップする。
              新たな mysqld
              サーバをバックアップしたファイルを使用するようにして起動し、バックアップ内の
              .ibd
              ファイルをクリーンアップする。
            
          TODO には、クリーンな .ibd
          ファイルも別の MySQL/InnoDB
          に移動できるようにすることが挙げられています。そのためには、.ibd
          ファイル内でトランザクション ID
          とログシーケンス番号をリセットすることが必要になります。
        
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

