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"