MySQLのVPストレージエンジンとSPIDERストレージエンジンを使って、任意のテーブルを別ホストのMySQLに簡単に移行するスクリプトを書きました。
※ただしPRIMARY KEYがあるものに限る
VPとSPIDERを使って任意のテーブルを別ホストに移行する — Gistに置いてあるスクリプトを落としてきて実行権限を付与しておく。
wget http://gist.github.com/raw/571569/cb624c24fac767188b4ee9e4925d3f7bfd4dc443/gistfile1.pl -O mygrate_to chmod +x mygrate_to
移行先ホストに空のテーブルをつくる。
mysqldump -u kamipo -h old-db-host --opt --no-data old_db table1 table2 table3 | mysql -u kamipo -h new-db-host -v new_db
移行元ホストのVPとSPIDERを使って移行先ホストにデータをコピーする。
./mygrate_to --host new-db-host -u kamipo -d new_db table1 table2 table3 | mysql -u kamipo -h old-db-host -v old_db
とっても簡単ですね!
mygrate_toはmysqldumpみたいに標準出力に移行用のSQLをはきだすので、ファイルに保存してテーブルパラメータの調整やパーティショニングを手動で編集すると、最初から全部自分で移行用SQLを書かなくていいので便利だと思います。
あと注意したいのは、MySQLの仕様でCOMMENTは60文字以内に切り詰められるので、とくにVPストレージエンジンのテーブルパラメータは文字数制限に引っかかりがちです。とりあえず短いテーブル名にするなりして回避するしか現状なさそうです。
【追記】
VPとSPIDERのテーブルパラメータはCOMMENTとCONNECTIONのどちらにも書けるので、文字数制限に引っかかりそうな場合はCONNECTIONも併用することで回避できます。
また、MySQL 5.5ではCOMMENTの文字数制限がかなり拡張されているようで、VPとSPIDERのテーブルパラメータを指定する程度では困らないようになっているはずです。