|
based on v35 (2010/09/25 追従) - オリジナル シングルサーバでの耐久性MongoDBのバージョン1.8で、シングルサーバでの耐久性を持つことになります。http://jira.mongodb.org/browse/SERVER-980 で情報を追うことができます。 今のところ(そしておそらく永遠に)、シングルサーバは理由を問わず重大な問題になることがあるので、データをレプリケーションを使いコピーし続けることを推奨します。 repair コマンド
マシンがクラッシュした後や、 kipp -9 で停止させた後、 repairDatabase を実行することを考えてください。このコマンドは、すべてのデータが壊れていなかチェックし、壊れているものがあった場合取り除きます。またデータファイルを少し縮小します。 ハードウェアがクラッシュした場合、 repair ( fsck と似ています)を実行することを推奨します。スレーブがクラッシュした場合には、スレーブを最初からやり直すためのオプションがあります。 コマンドラインから: mongod --repair シェルから (ローカルを含むすべてのDBに対してする必要があります): > db.repairDatabase(); repairコマンドの実行中、 mongod は作業中のファイルをディスクに書き出します。デフォルトでは mongod は、dbpathの下に作業用のディレクトリを作成します。代わりに、 --repairpath コマンドラインオプションで一時的なrepairファイルを置くディレクトリを指定できます。 repairは、デーベース全体を調査するため遅い操作であることに注意してください。 データベースが異常終了した後で、restartしようとすると mongod は以下のように表示します。
**************
old lock file: /data/db/mongod.lock. probably means unclean shutdown
recommend removing file and running --repair
see: http://dochub.mongodb.org/core/repair for more information
*************
そして終了します。 --repair をつけて起動すると、 mongod は正常に起動します。 validate コマンドもう一つの方法として、リスタートしてから、 validate コマンドを指定したテーブルで実行し、コレクション上のコンテンツが壊れてないか確認することができます。 たとえば、ここで、 users コレクションに対して validate を行ないます。 > db.users.validate();
{
"ns" : "test.users",
"result" : " validate
details: 0x1243dbbdc ofs:740bdc
firstExtent:0:178b00 ns:test.users
lastExtent:0:178b00 ns:test.users
# extents:1
datasize?:44 nrecords?:1 lastExtentSize:8192
padding:1
first extent:
loc:0:178b00 xnext:null xprev:null
nsdiag:test.users
size:8192 firstRecord:0:178bb0 lastRecord:0:178bb0
1 objects found, nobj:1
60 bytes data w/headers
44 bytes data wout/headers
deletedList: 0000000010000000000
deleted: n: 1 size: 7956
nIndexes:2
test.users.$_id_ keys:1
test.users.$username_1 keys:1 ",
"ok" : 1,
"valid" : true,
"lastExtentSize" : 8192
}
--syncdelay コマンドラインオプションバージョン1.1.4から、 --syncdelay オプションで、どのくらいの間隔でディスクに書き込むか(デフォルトは60秒)設定することができます。レプリケーションが使われてない場合、この時間を短くするのもいい方法でしょう。 参照 |

IF YOU HAVE A QUESTION, POST IT TO THE USER GROUP.
These pages are fine for comments, but for questions, your best bet will always be the MongoDB User Group. blog comments powered by Disqus