BerkeleyDBからSQLiteに移行
MobavleType 3.2 への移行を考えてテストをしているわけなんですが、BerkeleyDB に関してはテンプレートに recently_commented_on 利用していると問題があります。
この件については ogawa さんの下記の記事が非常に参考になり、加えてこの件に関するパッチも作成されておられます。
Ogawa::Memoranda : MT 3.2でrecently_commented_onとBerkeleyDBに嵌っている人が多い件について
要するに、「recently_commented_on の仕様変更」と「MT::Entry->comment_latestでやたらメモリを消費するという、BerkeleyDB特有の問題」によってメモリ消費量増大やパフォーマンス低下が発生し、リビルドでタイムアウトしてしまうことがある、ということですね。
ただ当サイトにおいては、エントリー数増加に伴ってリビルドなどのパフォーマンスが悪く、以前から他のDBMSに移行しようと考えていました。ロリポップ!では MySQL も利用できますが、いかんせんMySQLのサーバ負荷が読めないため二の足を踏み、騙し騙し BerkeleyDB のまま運用していました。
そこで CHEEBOW さんの「MovableTypeで行こう!」に書かれていた記事
MovableTypeで行こう!: BarkeleyDBからSQLiteへ移行してみる
でロリポップ!にも SQLite モジュールがインストールされている事を知り、いい機会なので早速 MT3.2 より先に SQLite へ移行してみることに。
移行作業にあたっては、ogawa さんの下記記事が参考になりました。
Ogawa::Memoranda : SQLiteをMovable Typeで使ってみる
実際に移行時に使ったのは、これもやはり ogawa さんの下記 CGI スクリプト
Ogawa::Memoranda : mt-db-convert.cgi: MTデータベースの相互変換CGIスクリプト
を利用し、BerkeleyDB -> SQLite にコピー。mt.cfg をさくっと変更してデータの移行を確認。リビルドで完了。
ogawa さん、大変参考になる記事をありがとうございました。
10 月 8th, 2005 at 20:52:48
ああ、、、ヴァリウム男爵さんはSQLiteに移行されたんですね…
うらやましいです。
ロリポのMYSQLサーバー、やはりものすごく負荷が高いらしく、特に3.2にしてからやたらと500エラーが出ます。
そのためMySQLからSQLiteに変更したいんですけど、
どうもやり方が見当たらなくて…
BerkeleyDBからSQLite とかBerkeleyDB からMySQLのやり方ばっかり引っかかってきて、肝心のMySQLからSQLiteへのやり方がわからないです(涙)
一回MySQLからBerkeleyDBにして、そこからSQLiteにするしかないでしょうか?
10 月 8th, 2005 at 21:24:05
Iranaさん、どうも。
上の記事で紹介した ogawa さんの mt-db-convert.cgi を利用すれば相互変換が可能みたいです。(僕自身は BerkeleyDB -> SQLite しか試していませんが)
是非、お使いになってみてはいかがでしょうか?
10 月 8th, 2005 at 22:52:49
ヴァリウム男爵さん、ありがとうございます。
やってみたんですけど、エラーでまくりなんです(涙)>mt-db-convert.cgi
今ogawaさんにも質問中です、、、
あうん、ロリポのMySQLがもっと軽ければこんなことで悩まなくてもいいのに~
10 月 9th, 2005 at 6:40:00
mt-db-convert.cgiの3.2対応版をogawaさんが出してくださいましたので、問題は解決しました。
ところで、ヴァリウム男爵さん、MT4iは何か設定いじりました?
SQLiteにしたとたんに500エラーなんですけど…
(3.2でも表示できているのは確認済み)
教えて君になってて申し訳ないんですが、
設定変更されているようであれば教えてください。
お願いします。
10 月 9th, 2005 at 7:10:51
ごめんなさい、あれこれいじってるうちに自己解決しました。
ゴミコメント増やしてすいません
10 月 9th, 2005 at 9:41:01
MT4i の件ですがひょっとして、SQLite の Database 指定に相対パスを指定していたということはないですか?絶対パスで指定しないと、僕のところでは MT4i でエラーになりました。
BerkeleyDB のときと同じですね。
何はともあれ、うまくいったようで何よりです。
10 月 9th, 2005 at 18:40:36
たびたびで申し訳ありませんが教えていただけますでしょうか?
今回実はさくらインターネットにお引越ししました。
で、MT4iを設置して、閲覧とコメント投稿は全然問題なく行えるんですけど…
何故かエントリの新規投稿と編集で500エラーが出ます。
そして500エラーのくせに何故か保存もリビルドもできています。
パーミッションも間違えてないし、dbのパスもhomeからの絶対パスだし、もー何がなんだか・・・
可能性があるとすれば、さくらだと拡張子.phpは実行権限与えてやらないと表示され無いことくらいですが、
それだってmt.cfg(mt-config.cgi)を編集済みでパーミッションおかしくないし…
エラーが出ても反映されてはいるのでいいっちゃいいんですけど、どうにも気持ちが悪くて。
太鉄さんの方にも一応質問してはいますが、色々とお忙しそうなので、ヴァリウム男爵さん、もし何かおわかりでしたら教えていただけないでしょうか…?
10 月 9th, 2005 at 22:17:25
特にうちでは問題でてません。パスは home から、というか / からなんですよね?(例えば /home/hoge/pblic_html/… みたいな)
でも、保存までは正常にできるとのことなので、あまり基本的なミスでもないような。MT3.2特有の問題なのかな。
MT4i は公開エントリー投稿/編集後に、インデックステンプレートのリビルド、個別エントリーテンプレートのリビルド、更新Pingの送信という処理をしていますので、その中のどれかでこけてる可能性はあると思います。
何か分かったらお知らせしたいと思いますが、うちでは発生していない問題なので難しいかも。あまり期待はしないでくださいね(^^;
10 月 10th, 2005 at 7:01:05
そうです、/home/user/www/です(さくらの書き方)
ロリポ+3.2+MySQLの時は、MySQLのおかげで500エラー出まくってたんですよね。それでも500エラーが出ないこともあったので、これはほぼタイムアウトなのは間違いないです。
あと、ロリポ+3.2+SQLiteでの投稿もセーフでした。
どうもさくら側の問題っぽいです。
とにかく500エラーが出るのがすごく早いんですよね。
そのくせリビルドも保存もできている…
ちなみに下書き時はエラー出ていないので、リビルドで引っかかってるのは確実なんですが。
up-rebuild.cgiはエラー起こしてないので、インデックステンプレートのリビルドは問題いと思います。
なので、個別エントリーのリビルドか更新pingの送信のどちらかと言う可能性が高そうです。
もう少しあれこれいじくってみます。。。
あとは考えられるのはドメインの浸透が終わりきってなくて、前のサーバーのMTとこっちのサーバーのMTを行ったりきたりしてる可能性も・・・
いや、/homeから書いてるんだから違うしなぁ…