サーバ障害→移転→復旧あれこれ

  • 投稿日:
  • by
  • カテゴリ:

心の傷も癒えてきたので、備忘録がてら今回のサイト移転の
顛末を書いておこうと思う。
なぜなら、過去に学ばない者は愚か者だからだ。
(注:管理人は過去にも同じような経験をしています)

悲劇発生

サイトに障害が起きた。
なかなか復旧しないなーと思っていたら、データベースにログインできない。
ログインできないというか、データベースが存在しない。
すっからかん。

(´・ω・`)ショボーン

うむらうす本館

  • Movable Typeで運営
  • 個別エントリーのファイルは残っているがデータベースがなくなった
    →WEB1.0化を達成!うれしくない!

7月時点のバックアップが残っていたのでインポートしようとしたら、
Movable Typeさんに「ファイルが大きすぎるでござる」と言われた。
自分が作ったバックアップファイルに文句言うな!

しかしインポートできないと、データベースが復活しない。どうしよう。
泣きそうになりながら、解決可能な問題か調査。

結論:ムリ!わーい!

泣きながら1500個ぐらいあるHTMLファイルを加工、必要部分を結合して
インポート用のファイルを作成。Jedit Xさんがマルチファイル置換で大活躍。
正規表現で、検索した文字列の入れ替えとかもできちゃうと知る。
正規表現:とことん!ホームページ

ファイルの文字コードの罠にハマったりしながら、なんとかインポートできた。
ここまでで2週間以上経っていたような。

うむらうす -ANNEX

  • WordPressで運営
  • WordPressに6月までの記事をインポートしたところ、
    個別エントリーだけでなく月別アーカイブなども動くようになった!
  • ついでに、動かなくなっていたWordTwitも動いた
  • なので、別館に関しては失われた3ヶ月分を、
    Googleキャッシュから泣きながら移すだけで済んだ

バックアップ

今後のデータベースファイルのバックアップby方法を検証、確立させておく必要あり。
なぜなら、過去に学ばない者は愚か者だからだ。
(注:今回のような事故は2回目です)

WordPress:WordPress Database Backupで。
ツール→バックアップ→定期バックアップ→週1回 をチェック
で、1週間ごとにバックアップファイルがメールで送られてくるようにできた。

Movable Type 5:自動バックアッププラグインが見つからなかったので、
MySQLのバックアップを、cron+シェルスクリプトで行うことにした。
シェルスクリプトは以下のような感じ。
mysqldumpのパスはマニュアルにはないが、 /usr/local/bin/ にある。
(参考:ハッスルサーバーでのWP-DBManagerの使い方

#!/bin/sh
bak=`date +%y%m%d`
/usr/local/bin/mysqldump -a --opt --host=ホスト名 -c --user=MySQLユーザ名 --password=パスワード データベース名 | /usr/bin/gzip | /usr/bin/uuencode 好きな名前$bak.sql.gz | /usr/bin/mail -s "好きな名前$bak.sql.gz" 送信先メールアドレス

mysqldumpのオプションは以下を参照。
MySQL :: MySQL 4.1 リファレンスマニュアル :: 4.9.7 mysqldump(テーブル構造とデータのダンプ)

cronでのファイル名の指定は、ルート直下に置く場合は以下の通り。

/home/umu/public/ファイル名

publicを知らずにnot foundを連発しましたこんにちは!

ということで、なんとか自動バックアップの体制も整ったし、
これでいつサーバが飛んでも大丈夫だ!いつでも来い!

って言っておけばしばらく来ないだろう。
というか、来なくていいです。ハイ。

良い子のみんなは、バックアップはちゃんと取ろうね!
約束だぞ!