MongoDB Как узнать каталог данных с помощью драйвера Java

Я использую экземпляр MongoDB только с одним узлом. Я хотел бы написать веб-службу, которая синхронизирует файлы данных и архивирует их в папку резервного копирования.

В идеале я должен получить расположение каталога данных программно (а не читать файл конфигурации), чтобы я мог легко перенести его с разрабатываемой машины на рабочую машину, где пути установки различаются. Есть ли способ сделать это с помощью драйвера Java?


person Eduardo    schedule 21.02.2012    source источник
comment
Вы просто напрашиваетесь на проблему, пытаясь сделать резервную копию MongoDB таким образом. Скорее всего, у вас будут поврежденные файлы. Вот почему существует инструмент mongoexport.   -  person Old Pro    schedule 23.04.2012
comment
Даже если я остановлю базу данных? У меня складывается впечатление, что просто копирование файлов может быть быстрее?   -  person Eduardo    schedule 23.04.2012
comment
Тогда используйте mongodump. Копирование файлов может быть быстрее или медленнее, так как может включать в себя копирование большого количества свободного места в файлах. Но восстановление из резервной копии файла дает вам возможность позже воссоздать именно то, что у вас было (конфигурация и все остальное). Резервное копирование в переносимое представление базы данных открывает такие возможности, как позднее объединение данных или резервное копирование только определенных частей базы данных.   -  person Old Pro    schedule 23.04.2012


Ответы (2)


Попробуйте использовать команду use admin db.runCommand({getCmdLineOpts: 1}), как описано здесь а затем играть с возвращенными данными.

Пример возвращаемых данных:

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

Вы можете использовать mongoexport для получения данных; запустите его с рабочей машины и укажите хост/порт/коллекцию машины разработки. Данные можно импортировать на рабочую машину с помощью mongoimport. .

person nico.ruti    schedule 27.02.2012
comment
Машины разработки и хост-компьютеры не находятся в одной сети. Мне не нужно передавать данные от одного к другому. Это мое приложение вызовет резервное копирование. Я бы предпочел fsync и сжатие (не уверен, насколько быстро будет выполняться mongoexport + сжатие). Я много смотрел, и, похоже, нет никакого способа получить местоположение каталога данных программным способом. Я думаю, что мне придется сделать это через конфигурацию - person Eduardo; 28.02.2012