2016-06-24 12 views
2

mongoデータベースを復元するためのバッチファイルを実行する私のJavaコードです。それは永遠に取っています(25分間走り続け、まだ止まらなかった)。私は単一のコレクションだけを復元すると、問題は完全にデータベースを復元するときに問題なく動作します。Javaを使用したバッチファイルからのmongoDBバックアップ/復元?

ありがとうございました。

Process pDb = Runtime.getRuntime().exec("cmd /c restore_db.bat",null, new File(projectPath)); 

try (final BufferedReader b = new BufferedReader(new InputStreamReader(pDb.getInputStream()))) { 
     String line; 

     while ((line = b.readLine()) != null) { 
       System.out.println(line); 
     } 
} 

log.info("waiting for restore complete database..."); 

int exitVal = pDb.waitFor(); 

log.info("Process exitValue: " + exitVal); 

以下は、restore_db.batバッチファイルのコードです。

@echo off 

REM move into the backups directory 
CD C:\project\backup 

REM restore the database 
echo Running restore complete database 
mongorestore --db dbName dump/app 

echo RESTORE COMPLETE 
+0

手作業で修復する必要がある場合は、手動で復元してください。 – profesor79

+0

1〜2秒かかります。 – saurabh

+0

回答、ありがとう - バッチファイルを実行しましたか?それはどのくらいかかりますか? – profesor79

答えて

0

これを読んだ後、link私は私の問題を解決することができました。私はこれに私のJavaコードを変更

Process pDb = Runtime.getRuntime().exec("cmd /c restore_db.bat",null, new File(projectPath)); 

InputStream stderr = pDb.getErrorStream(); 
InputStreamReader isr = new InputStreamReader(stderr); 

try (final BufferedReader b = new BufferedReader(isr)) { 
      String line; 

      while ((line = b.readLine()) != null) { 
        System.out.println(line); 
      } 
} 

log.info("waiting for restore complete database..."); 

exitVal = pDb.waitFor(); 

log.info("Process exitValue: " + exitVal); 

私はプロセスのぶら下げの実際の理由を取得します。私はこのエラーが発生しているJavaコンソール:E11000重複キーエラーインデックス。バッチファイルには、私は同じデータベースを復元しています。バッチファイルでデータベースの名前を変更すると、データベースはすぐに復元されます。 すなわち

mongorestore --db dbName dump/app 

は、名前dbName2で新しいデータベースが復元され

mongorestore --db dbName2 dump/app 

に変更しました。

関連する問題