Mongodump с удаленного сервера

Недавно мы перенесли некоторые данные в MongoDB и теперь изучаем возможность ежедневного резервного копирования, предпочтительно из задания cron, и восстанавливаем одну из резервных копий во вторичную базу данных mongo.

Наша система настроена следующим образом:

Существует три сервера: сервер 1 имеет базу данных mongo для разработки, сервер 2 имеет две базы данных mongo, одну для промежуточных данных и одну для производства, а на третьем сервере мы запускаем все наши задания / пакетные сценарии cron.

Я проверил документы mongo, вошел на наш сервер заданий cron и попытался запустить следующую команду: (имя пользователя, хост и пароль изменены в целях безопасности, на самом деле я не подключаюсь к localhost)

mongodump --host 127.0.0.1/development --port 27017 --username user --password pass --out /opt/backup/mongodump-2013-10-07-1

Я получаю следующие сообщения:

Пн 7 октября 10:03:42 запуск нового монитора набора реплик для набора реплик 127.0.0.1 с начальным числом развития: 27017
Пн 7 октября 10:03:42 успешно подключен к разработке семян: 27017 для набора реплик 127.0.0.1
Пн 7 октября 10:03:42 предупреждение: узел: разработка: 27017 не является частью набора: 127.0.0.1 ismaster: { ismaster: true, maxBsonObjectSize: 16777216, ok: 1.0 }
Пн 7 октября 10:03:44 Монитор набора реплик для набора реплик 127.0.0.1 запущен, адрес 127.0.0.1/
Пн 7 октября 10:03:44 При запуске [ReplicaSetMonitorWatcher] не удалось подключиться к [127.0.0.1/development:27017] не удалось установить подключение 127.0.0.1/development:27017

Я подтвердил, что могу подключиться к базе данных Монго, используя mongo -u -p ip/development

Нашей конечной целью будет сброс данных из производственной базы данных и их сохранение в промежуточной базе данных. Эти две базы данных расположены в одном окне, если это имеет значение, но для целей тестирования я просто пытаюсь получить резервную копию данных тестов разработки.

12 ответов

Решение

mongo клиент может анализировать URI строки подключения MongoDB, поэтому вместо указания всех параметров подключения можно отдельно передать URI строки подключения.

В вашем случае вы пытаетесь передать URI подключения как host, но 127.0.0.1/development не является допустимым именем хоста. Это означает, что вы должны указать database параметр отдельно от host:

mongodump --host 127.0.0.1 -d development --port 27017 --username user --password pass --out /opt/backup/mongodump-2013-10-07-1

Вы можете использовать с Mongodump с --uri

mongodump --uri "mongodb://usersname:password@127.0.0.1:27100/dbname?replicaSet=replica_name&authSource=admin" --out "C:\Umesh"

Все ваши коллекции будут храниться в папке out, в качестве имени базы данных будет создано имя каталога, а все коллекции будут bson, а метаданные будут храниться в формате json.

Для восстановления

mongorestore --uri "mongodb://usersname:password@127.0.0.1:27100/dbname?replicaSet=replica_name&authSource=admin" -d dbname mongodbumppath

Попробуйте это, это будет работать.


Это сработало для меня.

Ссылка: https://docs.mongodb.com/manual/reference/program/mongodump


Синтаксис 1:

mongodump --host <hostname:port> --db <database> --username <username> --password <password> --out <path>

Синтаксис 2:

mongodump -h <hostname:port> -d <database> -u <username> -p <password> -o <path>



Пример 1:

mongodump --host 127.0.0.1:27017 --db db_app --username root --password secret --out /backup/db/app-17-03-07

Пример 2:

mongodump -h 127.0.0.1:27017 -d db_app -u root -p secret -o /backup/db/app-17-03-07
mongodump --host remotehostip:port --db dbname -u username -p password

Вот пример экспорта коллекции с сервера узла на локальный компьютер:

Host : xxx.xxx.xxx.xx
Port :27017
Username:”XXXX”
Password :”YYYY”
AuthDB : “admin”
“DB”: “mydb”

D:\mongodb-backup>mongodump -h xxx.xxx.xxx.xxx –port 27017 -u “XXXX” -p “YYYY” –authenticationDatabase “admin” –db “mydb”

Используйте это, чтобы получить дамп с использованием URI:

mongodump --uri=mongodb+srv://john:xxxxxxxxxxxxxxx@cluster0-jdtjt.mongodb.net/sales

Для меня это сработало как прелесть для одной коллекции с удаленным Windows Server.

mongodump --host <remote_ip> --port <mongo_port> --db <remote_db_name>  --authenticationDatabase <remote_auth_db> --username <remote_mongo_username> --password <remote_db_pwd> --out <local_DB_backup_folder> --collection <remote_collection_name>

Вы также можете использовать gzip для резервного копирования одной коллекции и сжатия резервной копии на лету

mongodump --db somedb --collection somecollection --out - | gzip > collectiondump.gz

Или с датой в имени файла:

mongodump --db somedb --collection somecollection --out - | gzip > dump_`date "+%Y-%m-%d"`.gz
      mongodump --host hostip -d dbname --port portnumber --username username --password password --authenticationDatabase admin -o ./path/of/backupfolder

примечание: путь "./path/of/backupfolder" находится в вашем клиенте

Это сработало для меня:

Шаг 1: Экспортируйте удаленную/локальную БД.

      mongodump --uri "mongodb+srv://USER:PASSWORD........." --out "/Users/Hardik/Desktop/mongo_bkp"

Шаг 2: Импорт

      mongorestore ./mongo_bkp/

На Mac это то, что сработало для меня (но обязательно используйте свои настоящие учетные данные):

      brew tap mongodb/brew
brew install mongodb-community@5.0
brew services start mongodb/brew/mongodb-community

mongodump --uri "mongodb://usersname:password@127.0.0.1:27100/dbname" --out "/Users/some_username/code/mongodb_dumps/dump/"
cd /Users/some_username/code/mongodb_dumps/
mongorestore --nsInclude "*.*"

Публикация этого здесь, если это кому-то поможет.

Мне не удалось подключиться с помощью mongodump. В итоге я установил расширение VS Code Mongo, и оно сгенерировало для меня строку. Команда выглядит так:

      mongodump -o dump_destination --uri "mongodb://<USERNAME>:<PASSWORD>@<HOST>:<PORT>/<DATABASENAME>?authSource=admin&readPreference=primary&ssl=true"
Другие вопросы по тегам