pig's diary

何でも忘れるので万年初心者ね

mongoDB を v2.0.2 にupgrade しておいたほうが良さそう。CentOS 5.7 でのupgrade。

しりとりアプリが、しょっちゅう固まってていやだなぁと思っていました。ま、誰も困らないんですけど。
で、mongoDB のupgrade で直ったので、経緯を書きます。

症状

  • mongoDB v1.6.5。Node.js v0.4.10(0.6 にしなきゃ・・)。さくらVPSCentOS 5.7。mongoose v2.4.7。
  • Nodeアプリが正常稼働している状態で、あるHTTPリクエスト以降、レスポンスが返ってこなくなる。
  • ログが出ない。node からも、mongo からも出ない。
  • restart しなきゃいけない。
  • mongoose で find を連続してcall するあたりで止まっているっぽい。
  • ためしに、HTTP GET Request のたびに DB リクエストが無駄に走るコードを書いたら、再現できた。

mongoDB v1.6.5 の アンインストール と、最新版 v2.0.2 のインストール

もともと使用していたv1.6.5 は、http://d.hatena.ne.jp/ja9/20100707/1278495362 を参考にさせていただき、その通りにインストールしていました。それが、ちょっと勝手が変わったようです。本家サイトの言う通りいったんアンインストールし、レポジトリも変更します。

Note: for users upgrading from our older (pre-2/2011) packaging scheme, it may be necessary to uninstall your existing "mongo-stable", "mongo-stable-server", "mongo-unstable", "mongo-unstable-server" packages before installing the new mongo-10gen, mongo-10gen-server pacakges.

http://www.mongodb.org/display/DOCS/CentOS+and+Fedora+Packages

ちなみに v2.0.2 は「Production Release (Recommended)」だそうです。

まず、以前追加したリポジトリを、消しておきます。

$ sudo vim /etc/yum.repos.d/CentOS-Base.repo
# このあいだ追加した [10gen]  を削除

こんどは、本家サイトの通りにリポジトリを追加します。
http://www.mongodb.org/display/DOCS/CentOS+and+Fedora+Packages
新しいファイル。/etc/yum.repos.d/10gen.repo

[10gen]
name=10gen Repository
baseurl=http://downloads-distro.mongodb.org/repo/redhat/os/x86_64
gpgcheck=0

yum でアンインストール&インストール。

$ sudo yum update
$ sudo yum remove mongo*
...
$ yum list | grep mongo
mongo-10gen.x86_64                         2.0.2-mongodb_1             10gen
mongo-10gen-server.x86_64                  2.0.2-mongodb_1             10gen
mongo18-10gen.x86_64                       1.8.4-mongodb_1             10gen    
mongo18-10gen-server.x86_64                1.8.4-mongodb_1             10gen
$ sudo yum install mongo-10gen*
...
$ mongod --version
db version v2.0.2, pdfile version 4.5
Wed Dec 28 02:24:26 git version: 514b122d308928517f5841888ceaa4246a7f18e3

mongoDB を起動。v1.6.5 で作った /data/db/* で、問題なく起動しました。

$ sudo /etc/init.d/mongod start
Starting mongod: all output going to: /var/log/mongo/mongod.log
forked process: 1984
                                                           [  OK  ]
$ mongo
MongoDB shell version: 2.0.2
connecting to: test
> show dbs
lastFirst	0.203125GB
local	(empty)
> 

一時はmongoDB 大丈夫か? と思いましたが、upgrade したら、だいぶいい感じです。