2012-02-21 17 views
2

MongoDBのインスタンスを1つのノードで使用しています。私は、データファイルをfsyncsし、バックアップフォルダにそれらを圧縮するWebサービスを記述したいと思います。MongoDB Javaドライバを使用してデータディレクトリを見つける方法

理想的には、設定ファイルを読み込むのではなく、データディレクトリの場所をプログラマチックに取得するので、インストールパスが異なる開発マシンから運用マシンに簡単に移植できます。 Javaドライバを使用してこれを行う方法はありますか?

+0

です。おそらく、ファイルが破損している可能性があります。そのため、 'mongoexport'ツールが存在します。 –

+0

データベースを停止しても?私は、ファイルをコピーするだけで高速になるという印象を受けますか? – Eduardo

+0

さて、['mongodump'](http://www.mongodb.org/display/DOCS/Import+Export+Tools#ImportExportTools-mongodump)を使用してください。ファイルをコピーする方が速くなる場合もありますし、ファイルに空き領域をたくさんコピーする場合もあります。しかし、ファイルバックアップからリストアするだけで、後で自分が持っていたもの(構成とすべて)を後で再現することができます。データベースのポータブル表現にバックアップすることで、後でデータをマージする、またはデータベースの特定の部分だけをバックアップするなどの可能性が可能になります。 –

答えて

3

hereのようにadmin db.runCommand({getCmdLineOpts:1})を使用してから、返されたデータを再生してみてください。

例の戻りデータは、あなただけのバックアップのMongoDBにそのようにしようとしてトラブルを求めている

{ 
     "argv" : [ 
       "mongod", 
       "--port", 
       "6669", 
       "--dbpath=c:\\data\\mongo2", 
       "--rest" 
     ], 
     "parsed" : { 
       "dbpath" : "c:\\data\\mongo2", 
       "port" : 6669, 
       "rest" : true 
     }, 
     "ok" : 1 
} 
0

mongoexportを使用してデータを取得できます。プロダクションマシンから実行し、開発マシンのホスト/ポート/コレクションを指定します。 mongoimportを使用して、データを本稼働マシンにインポートすることができます。

+0

開発マシンとホストマシンが同じネットワーク上に存在しません。データを一方から他方に転送する必要はありません。バックアップをトリガーするのは私のアプリケーションです。むしろfsyncとcompress(mongoexport + compressの速さがどれくらい速いかわからない)です。私は多く見て、プログラム的な方法でデータディレクトリの場所を取得する方法がないようです。私は設定をしなければならないと思う – Eduardo

関連する問題