MySQL データベースが壊れました

或る日突然、MySQLが立ち上がらなくなりました。
これは困った。
Web siteはWordPressで作っています。
つまり、動きません。

あれは去ること一月前、iTunesのupdateをした時です。
促されるままに再起動をしたら、ホームページが開かなくなってしまいました。(涙)
過去のバックアップから戻そうとしたら、直近の一ヶ月分だけバックアップが見当たりませんでした。(涙)
Time Machineしっかりしてくれよ〜。

そしてここまで復元するのに大凡半月かかりました。
多分まだ完全には復元できていません。
会社側のデータの復元は単純だったので戻ったと言えると思います。(見るところほとんど無いし)
対してこちら側は、どこまで戻せているのか不安です。(全ページを確認するなんてしたくない)
だから、もういいんです。戻っていなくても諦めます。

さて、やったこと。
TimeMachineで見つけた最新のデータベースを持ってきます。
これはバックアップを取っていないデータがあったからです。
データは減っても困らないものでしたので、テーブルの構造復元のために使いました。(まぁ、あればあったで嬉しいですし)
この時、データが壊れているのは確実だったので、my.cnfにinnodb_force_recovery=4(4は適当。実際は1から順番に上げていった)とかって書き込んでからmysqldを起動します。
エラー吐かずに立ち上がった(read only modeです)ら、必要とするデータベースをphpMyAdminで引っこ抜きます。(使う予定のないものは捨てました)
※この記述を残したままにして、書き込みできないとエラーを吐かれ、このサイトにログインできなくなったのは内緒です。(^_^;;

次にまっさらのデータベースを用意します。
こちらはターミナルで作業しました。
古いデータベースのフォルダをリネームし、新しくフォルダを作り直します。オーナー情報も付け替えます。
mysql-install-dbで初期化しました。
そうしたら、rootユーザーのデータすらないのに気付きました。

古い方のデータベースでmysqldを立ち上げ直して、データベースmysqlを引っこ抜きます。
新しい方のデータベースで立ち上げ直します。
この時、ユーザー情報がまるで入っていないので、phpMyAdminではログインできません。(コマンドラインでも弾かれます)
なので、mysqldを–skip-grant-tablesオプションを付けて立ち上げ直しました。
この状態だとユーザー名もパスワードも関係なく立ち上がるので、さっき引っこ抜いたデータベースmysqlのダンプデータを突っ込みます。
これでログインできるようになるので、mysqldを通常モードで再起動。
他の引っこ抜いたデータ達をを片端から放り込んでいきます。

で、このページの更新です。現在、ここ。

なんとか表示できるようになりましたが、多分テーブルの幾つかが消えている模様。
エラーが出ていたんだけれども、無視していたツケが今、来ています。(^_^;;
しばらくはエラー情報をもとにテーブルを作り直さないといけないようです。

ア〜〜、面倒臭い。(自業自得)

追加
Googleでは暫くは「にわ管」で検索しても1ページだけしか表示されないようです。
Googleさんに再インデックスの依頼をかけたんですけどねぇ。
当然、会社のサイトも「現在、有限会社キタダ印刷のサイトは停止しております。」が出っ放しの模様。

コメントを残す