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