2016-06-24 1 views
2

Hier ist mein Java-Code zum Ausführen der Batch-Datei zur Wiederherstellung der Mongo-Datenbank. Es dauert ewig (lief 25 Minuten lang und hörte noch nicht auf). Wenn ich nur einzelne Sammlung wiederherstellen, funktioniert es einwandfrei, wenn ich die vollständige Datenbank wiederherstellen.mongoDB Sicherung/Wiederherstellung von Batch-Datei mit Java?

Vielen Dank im Voraus.

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); 

Hier ist mein Code der Batch-Datei 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

Wenn Sie manuell wiederherstellen, wie viel Zeit benötigt wird, um zu beenden? – profesor79

+0

Es dauert 1 oder 2 Sekunden. – saurabh

+0

ok, vielen Dank für die Antwort - haben Sie nur Batch-Datei ausgeführt? Wie lange dauert es? – profesor79

Antwort

0

Nach dieser link Lesen gelang es mir, mein Problem zu lösen. Ich änderte meine Java-Code zu dieser

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); 

dann bekomme ich den eigentlichen Grund des Prozesses hängt. Ich Java-Konsole bekomme ich diesen Fehler: E11000 doppelte Schlüssel Fehler Index. Welches ist in der Batch-Datei Ich stelle die gleiche Datenbank wieder her. Wenn ich den Namen der Datenbank in Batch-Datei geändert habe, wird die Datenbank in kürzester Zeit wiederhergestellt. d.h

mongorestore --db dbName dump/app 

zu

geändert
mongorestore --db dbName2 dump/app 

dann neue Datenbank mit dem Namen dbName2 wiederhergestellt wird.