パーティションごとにmysqldumpする
ログテーブルのようなすごい巨大なテーブルがあって、古いログはいらないから削除したい、でも万が一のときにデータはどこかに取っておきたいというときは、
- --complete-insert
- カラム名を含んだ、完全なINSERTステートメントを使用
- --no-create-info
- ダンプされたテーブルを再作成するCREATE TABLEステートメントを書かない
- --where
- WHERE状態に選択された行のみダンプ
このあたりをオプションに含めて置くとよいのかなーと思った。
# mysqldump -u$user -p \ > --default-character-set=utf8 \ > --complete-insert \ > --no-create-info \ > --where="created_at>='2012-04-01 00:00:00' and created_at<'2012-05-01 00:00:00'" \ > $db_name $table_name > ${table_name}_p201204.sql
で、ダンプしたあとに、
> ALTER TABLE $table_name DROP PARTITION p201204;
参考
MySQL :: MySQL 5.1 リファレンスマニュアル :: 7.12 mysqldump — データベースバックアッププログラム
http://dev.mysql.com/doc/refman/5.1/ja/mysqldump.html