InnoDBでファイルコピーでバックアップを取る方法

MyISAMではテーブル毎にデータファイルが作成されるが、InnoDBではMySQL4.0まではすべてのデータベースのデータを一つのファイルで管理していた(mysqlroot/data/ibdata1)。
しかし、MySQL4.1以降はInnoDBでもテーブル毎にデータファイルを作成することができるようになった。

手順

名前はhogeデータベースとする。(Windowsで実施)

  1. my.iniに[mysqld]ディレクティブ以下にinnodb_file_per_tableを追加
  2. MySQLサービスの再起動
  3. show variables like '%innodb_file_per_table%'でValueがONになっている事を確認
  4. optimize tableコマンドを実行。これによりテーブル毎のファイルが作成される。(自分はMySQL Administratorからやった)
  5. MySQLサービスの停止
  6. cp hoge hoge_temp
  7. mv hoge hoge_back
  8. mv hoge_temp hoge
  9. MySQLサービスの起動

で上手くいった。
ちなみにMyISAMの場合はデータベース名が変わってもちゃんとテーブルを認識できるが、InnoDBの場合はデータベース名が変わるとテーブルを認識できなくなる。

残タスク

  1. ibdata1のサイズが小さくならない件について調査
  2. まじめに動作確認(ほんとに動くのかどうか)

目標としてはRAMディスク上にInnoDBのデータを乗せる事なのだけれども…事例がほとんどない気がするのでやってみないと分からないなぁ。