Mongodump с удаленного сервера
Недавно мы перенесли некоторые данные в MongoDB и теперь изучаем возможность ежедневного резервного копирования, предпочтительно из задания cron, и восстанавливаем одну из резервных копий во вторичную базу данных mongo.
Наша система настроена следующим образом:
- Сервер 1: база данных разработки Монго
- сервер 2: две базы данных mongo, одна для промежуточных данных и одна для производства
- сервер 3: отсюда мы запускаем все наши задания/пакетные скрипты 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
Наша конечная цель - сбросить данные из производственной базы данных и сохранить их в промежуточной базе данных. Эти две базы данных расположены в одном окне, если это имеет значение, но для целей тестирования я просто пытаюсь получить резервную копию данных тестов разработки.
Ответы
Ответ 1
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
Ответ 2
This worked for me.
Reference: 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
Ответ 3
Вы можете использовать с mongodump с --uri
mongodump --uri "mongodb://usersname:[email protected]:27100/dbname?replicaSet=replica_name&authSource=admin" --out "C:\Umesh"
Все ваши коллекции будут храниться в папке out, в качестве имени вашей базы данных будет создано имя каталога, а все коллекции будут bson, а метаданные будут сохранены в формате json.
Для восстановления
mongorestore --uri "mongodb://usersname:[email protected]:27100/dbname?replicaSet=replica_name&authSource=admin" -d dbname mongodbumppath
Попробуйте, это будет работать.
Ответ 4
mongodump --host remotehostip:port --db dbname -u username -p password
Ответ 5
Вот пример экспорта коллекции с сервера node на локальный компьютер:
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"
Ответ 6
Вы также можете использовать gzip для резервного копирования одной коллекции и сжатия резервной копии на лету
mongodump --db somedb --collection somecollection --out - | gzip > collectiondump.gz
Или с датой в имени файла:
mongodump --db somedb --collection somecollection --out - | gzip > dump_'date "+%Y-%m-%d"'.gz