mysqldumpのデータから一部のテーブルだけ復旧するにはl

みなさん一度はやったことがあるはずのテーブル削除。
やった瞬間顔面蒼白になりますが、落ち着いてください。
これだけ覚えておけば5分以内に復旧できます。


まずdumpデータの加工処理

csplit dump.sql /^DROP/ {*}
egrep -rn 'CREATE TABLE `テーブル名`' *

※「-n」オプションは行数表示です
※「-A:行数」「-B:行数」オプションで前後まで含めて検索します

xx352:2:CREATE TABLE `テーブル名` (
xx367:2:CREATE TABLE `テーブル名` (
xx703:2:CREATE TABLE `テーブル名` (


ここからは全部catするなり、egrep -A オプションで
該当のファイルを探し出します。該当ファイルを見つけたら

mysql --user=ユーザー名 --password=パスワード データベース名 < xx367

で復旧完了です。

※必ずバックアップは取っておきましょう。
http://d.hatena.ne.jp/a9b/20090406/1239005447

おまけ
dumpファイルからデータベースだけを抽出

cat dump.sql |grep 'Current Database'

1つのデータベースだけ復元

mysql --one-database データベース名 < dump.sql


2013-07-04 他の参考サイト
http://nippondanji.blogspot.jp/2009/12/mysqldumpawk.html