У меня есть заводной скрипт, который падает на БД и восстанавливает БД из существующей резервной копии (SQL)Могу ли я запустить команду mongorestore внутри файла groovy?
Sql sql = Sql.newInstance(dbSQLUrl, userName, password)
Я прошел все необходимые параметры и побежал sql.execute()
, как показано ниже,
sql.execute(
alter database dbName
set offline with rollback immediate
drop database dbName
)
sql.execute(
RESTORE DATABASE dbName
FROM disk = 'C:\Backups'
WITH REPLACE
)
Все выше код работает отлично. Мне также нужно реализовать это для MongoDB. Есть ли эквивалент sql.execute()
в Mongo, где я могу запустить команду Mongo как mongorestore
в groovy файле.
Для Монго я следующий код:
List credentials = []
List servers = []
credentials.push(MongoCredential.createCredential(mongoUserName, mongoDBName, mongoPassword as char[]))
servers.push(new ServerAddress(mongoHost, mongoPort))
GMongoClient mongoClient = new GMongoClient(servers,credentials)
DB mongoDB = mongoClient.getDB(mongoDBName)
mongoDB.dropDatabase()
Теперь мне нужно запустить/включать следующую команду внутри моего заводной файла, mongorestore ~/backups/first_backup/
Есть ли способ, я могу добиться этого?
У меня есть код ниже, String command = "" "mongorestore $ dbBackUpPath" "" Процесс p = command.execute(), basckup db не создается, тогда как при запуске кода ниже в командной строке mongorestore/home/backups/test работает хорошо. Я вижу, что тестовый db восстанавливается. – Sharath
Вы добавили 'p.waitFor()'? Вам нужно каким-то образом дождаться завершения этой команды. Чтобы отладить, добавьте 'println p.in.text + p.err.text' после' p = command.execute() 'и посмотрите, что распечатает' mongorestore'. –
Плохо, что я ошибался, \ home \ backsups \ test вместо/home/backups/test. Теперь он отлично работает. – Sharath