データが・・・データが・・・消えた(というか消した)!

やっと運用できそうな勢いになってきた Movable Type、本運用に向けて最後の仕上げで MySQL のデータをバックアップ。

めんどくさいので MySQL Administrator を使ってテスト開始。

  1. とりあえず、MT用のスキーマをバックアップしてから削除。
  2. そのあと書き出した SQL を使ってリストアしてみました。

(そもそもこの手順がおかしいよね。凄く危険・・・)

The MySQL Server returned this Error:
  ・
  ・
  ・

は?何これ?リストアできないの?
しかも、エラーが途中で切れててよく見えない・・・

あ~あ、やっちゃった。
消えました。消えましたよ!データが。

うーん、どうしよう?
消えたのはテストデータなので、そこまで損失は無いですが本運用でこんなことが起きたらヤバいのできちんと検証してみました。

まず、MySQL Administrator のバージョンの問題かどうかを確認。
問題が発生したバージョンは 1.0.14 だったので、最新版(05/04/11 時点では 1.0.19)で同じ事をしてみたところ、問題なくリストアできました。
なので、結局はバージョンの問題のようですが、このままだとデータの復旧が出来ないので書き出された2つの SQL を比較してみました。

どうやら、 "ダブルクォーテーション が原因だったようです。
なぜか、1.0.14 で書き出された SQL 文はテーブル名やカラム名がダブルクォーテーションでくくられていました。
1.0.19 で書き出したほうは `バッククォーテーション で括られています。

と言うことで、エラーが発生して処理できなかった SQL を置換して再度リストアを実行。
きちんとリストアされました。

一応、バグとして挙がってました。
MySQL Bugs: #6532: MySQL Admin ignores "ANSI quotes" backup option

今回の教訓、
「データを消すときは要らないデータにしようね!」
って感じですか?
(おいおい、いまさらかよ・・・)