話題のナレッジベース | Knowledge Base Weblogs space
HOMEBlogs index Blog/ブログ >> space
space space
space
space
space
space
March 12, 2005 space
   space
space

MovableType バークレーDB破損からの復活!

space

実は、1月の後半にBerkeleyDBが壊れてしまい、苦節一ヶ月半掛けて修復しました。
この間に更新頻度は激減して、当然アクセスも減ってきてしまいました。
 
 このサイトご覧いただいていた方々には、申し訳ございません。
 復活までの道のりを、掲載いたししますので、ご参考にしてください。
 

space

 
 まず、MovableTypeの更新時にエラーが多発するようになってきて、正常に新規にエントリーの追加ができなくなってしました。次に、エントリーの更新にも支障がでてきて、トラックバックの追加やコメントの更新もできない状況です。


さて、困ってサーバーの状況を調べたところ、なんと私の管理ミスでディスク容量が契約数を超えていて使用可能容量をオーバーしていたのが原因でした。早速容量をアップしたのですが、既にバークレーDBは、破壊されてしまっていました。


ディスク容量に余裕ができても、MovableTypeの症状が改善しないどころか、悪化していきます。たまに新規でエントリーの追加やトラックバックできるのですが、entoryDBに問題がある以上、全ページの更新に関わるようなこともできず、全く運用できていなのと同じ状況です。


CMS=HASH(0x833eb08) substr outside of string at lib/MT/Serialize.pm line 58.
MT::App::CMS=HASH(0x833eb08) Use of uninitialized value in unpack at lib/MT/Serialize.pm line 58.
MT::App::CMS=HASH(0x833eb08) Use of uninitialized value in substr at lib/MT/Serialize.pm line 59.
MT::App::CMS=HASH(0x833eb08) substr outside of string at lib/MT/Serialize.pm line 59.
MT::App::CMS=HASH(0x833eb08) Use of uninitialized value in addition (+) at lib/MT/Serialize.pm line 60.
MT::App::CMS=HASH(0x833eb08) Use of uninitialized value in concatenation (.) or string at lib/MT/Template/Context.pm line 899.

さて、このような状況を何とかできなかと、ネットで調査してみると、対処方法としては一般的に『entorydbをExportして新しいエントリへインポートしなおす』とどこでも書いてあるのですが、もちろんこの手法を試しましたが、MovableTypeの限界?サーバーのタイムアウトやサーバーのパフォーマンスの限界でしょうか、既にエントリーが1000を超える状況だとすべてのエントリーを吐き出してくれません。


しかも、以前のサーバー移行時にも、同じようにエントリーのエクスポートを行いましたが、MovableTypeでは、エントリー毎にIDで管理していたので、このIDと既に公開済みの全ページのURLが一致しなくなってしまう問題もあり、どうしたものか悩んでしまいます。


確かに、既にあるページのことを忘れて作り直してしまえば話は簡単なのですが、SEOなど自己流のアクセス対策を施していることもあり、ある程度の方々にアクセスをしていただいていることを考えると、安易にページをなくす訳にもいきません。


そこで、考え付いた方法は、もうひとつMovabileTypeを別のサイトに構築して、そこにすべてのエントリーを手でコピーしなおす方法です。これはすべてのID番号を確認しながら行う手法なので、ページの記事は既存のページと一致します。そのデータがコピーでき次第、entorydb自体を別サーバーから既存のサーバーにコピーさせれば直るんじゃないかと言う安易な考えです。


これは、以前サイトを再構築したときに、本当ならばエントリーをエクスポートさせて再度インポートする手法を行うのを、試しにdbをコピーして保存しておいたものをコピーしてサイトを復活させた荒業の経験があるからです。


MovableTypeの場合、entry.* comment.* tbping.* category.* なども個別のDBに持っているので、エントリーだけ何とかなれば、いけるんじゃないかという安易な考えです。


さて、一ヶ月の時間を要してしまいましたが手順は上記のように簡単です。

別サイトにエントリーを手でコピーする

1:そのためには、エントリーをまずすべてID番号が判るように、新サイトに1〜最新のIDまで数字をタイトルに入れて下書き状態で保存しまくります。

2:旧IDと同じ番号の新サイトのIDのページに記事を流し込みます。


3:すべての記事をセットしなおして、新サイトに作成できたentorydbを、元のentorydbに上書きします。
(もちろん元のentorydbもコピーを保管しておきます。)

さて、これでMovableTypeのエントリーを開いてみると、なんて事でしょう!!完璧にもとの状況に戻すことができました。しかし、すべてのエントリーが下書き状態のままですので、これもすべて公開にセットしなおして、ページの再発行を行わなければいけませんが、この程度の作業は簡単です。


このような時間と労力を要する作業ですが、完璧にサイトを復活させることができました。
今後は、都度entorydbのコピーを保管するように心がけます。。


 




 

space
HOMENews BlogsBlog/ブログ | March 12, 2005 |  twitter Livedoor Buzzurl はてな Yahoo!ブックマーク人が登録
space


space Entries of this Category
space

  Next >> 2005年春は、花粉症にご注意! 04年の10〜20倍の大量飛散の予測 >> 

この夏の猛暑の影響で2005年春には、スギやヒノキの花粉が2004年比で10〜20倍も多く飛ぶという予測が出た。11月4日にNPO花粉情報協会が開催した「2005年スギ花粉...»この話題を見る…


  Previous << 覚えていますか?水スペ 川口浩 探検シリーズ ~未確認生物編~ << 

川口浩 探検シリーズは、テレビ朝日系「水曜スペシャル」で、'78年から'85年にかけて全43回放送された「川口浩探検シリーズ ~未確認生物編~」が遂にDVDとして復活しました。... »この話題を見る…


space
space
Welcome to knowledgeBase  Blogs  ▲TOP