まず、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のコピーを保管するように心がけます。。