皆様、旧年はお世話になりました。
本年もよろしくお願いいたします。
年末にこのサーバのデータベースを吹き飛ばしてしまったため、年明け早々ブログが閉鎖状態でした。
事の顛末は以下の通り。
- WordPress 2.9がリリースされたので、アップデートを試みる
- 使用しているMySQLのバージョンが古いからアップデートできないとWordPressに怒られる
- 使用中のサーバホスティングサービスは、MySQL 4.xか、5.xのいずれかを選べる仕様
- いままで4.xを使ってきた(使い始めた頃、まだ5.xが無かった)
- 5.xにアップグレードしたいが、アップグレードサービスはない。自己責任でのアップグレードとなる
- 通常ならば4.xと5.xのサーバを両方用意して移行して確認し、古い4.xを削除するが、残念なことに一度に利用できるDBはひとつ。
- つまり、4.xのデータをバックアップ→4.xのDBを削除→5.xのDBを作成→バックアップから復元という危険な手順を取らざるを得ない
- バックアップがきちんと復元できるか、自宅にサーバ立てて確認すべきだったが、「面倒だった」
- mysqldumpコマンドで、4.xのDBの中身をすべてバックアップ
この際に使用したコマンドは、
mysqldump -u[username] -p[password] -h[hostname] [dbname] > [backup filename] - 4.xのDBをえいや!っと削除
- 5.xのDBを新規作成
- mysqldumpでとったバックアップを、mysqlコマンドで流して復元
mysql -u[username] -p[password] -h[hostname] [dbname] < [backup filename] - 実際にサイトを確認
はい、文字化け。
ちなみにこのサーバでは独自ドメイン名が2つ登録してあり、それ以外にも無料で使える共用ドメイン名のサブドメインという形で2つ、計4つのドメイン名を運用している。
それらのドメインすべてで管理しているサービスで、DBに絡むものは主に以下の通り。
- 自分のブログ(このブログ)→WordPress 2.8
- かみさんのブログ →WordPress 2.8
- 自分の過去のブログ(更新停止中) →WordPress(古い)
- 自分のドメインのブログ以外のコンテンツ →Xoops
- かみさんのドメインのブログ以外のコンテンツ →Xoops
上記以外にもWikiや蔵書管理アプリなど動かしているものはあるが、幸いDBは使用していないので無傷。
ここで問題が、XoopsはEUCでデータをストアしており、WordPressはUTF-8だったこと。
実際この問題は知っていたのだが、それぞれのアプリケーションがデータを出し入れする分には支障が無いのでそのままにしていた。
ここで余計にややこしいのが、DBの設定はlatin1であること……。
上記をすっかり忘れて、mysqldumpする際に文字コードの指定をしなかったのだ。
しかも余計なことに、このホスティングサービスではWebのコントロールパネルからボタン一発でDBを作成できるのだが、作られるDBの文字コードは何故かujisである。(これにも気付かなかった)
EUC+UTF8の混在したバックアップデータを、EUCのデータベースに、UTF8指定で戻していたことになる。
結果、Xoopsは問題なく表示された。
だが、WordPressのデータが完全に化けた。
原因を探るのにしばらくかかった。
その後、文字コードの問題をどうしようか悩み、最終的にはブログを優先させて復旧することにした。
ブログは圧倒的にデータが多いので。
そこでmysqldumpに記述されている内容を確認すると、テーブルにデータを流すたびに文字コードの指定を(UTF8に)していたので、sedでその部分を削除。それから冒頭に、SETコマンドでutf8を指定。
さらにujisになっていた空のDB(5.x)を、mysqlにコマンドラインで接続し、alterコマンドでutf8に変更。
これらの準備のあと、再度mysqlコマンドでバックアップを流し込む。
これで今度は、WordPressのデータが見事に復旧。
代わりに、Xoopsは完全に文字化け。
いいよいいよもう。Xoopsのほうは、時間を見つけてテーブルごとにバックアップを分離して、手動で書き戻すことにするよ。
あー疲れた!
でもまあとりあえず復旧してよかった。
MySQL5になったので、使えなかったライフログのプラグイン(Lifestream)を使ってみようと思います。
コメント
何だかよくわからないけど、明けましておめでとうございます。
面倒臭くて、試さなくても55%くらいの確率で成功しそうな予感がするときはやらないよね。
だって面倒臭いんだもの。
> ちゃぼ
あけおめことよろ。
面倒でも治らないと困るものは直すよね。
ちゃぼさんちの水道管のように。
あけまして復旧おめでとうございます。
マーフィーの法則が働いたのかな?
今年もよろしくです^^;
あけましておめでとうございます。
去年はうずらくんのブログがきっかけでお知り合いになったんですよね。
今年もよろしくお願いしますね。
なんだか年末にトラブルあったりで大変でしたね
まさにTwでリアルにつぶやいていたんで大丈夫かなーと思ってましたけど・・・復旧できてよかったですね。
> らーちゃん
明けましておめでとうございます!
マーフィーの法則が働いたら、未だに復旧できていない気がするw
> そらまめさん
そうですね、出会いはブログですが最近はTwに偏ってますね、お互い(笑)
今年もよろしくお願いします!