Как скопировать базу данных с одного сервера MongoDB на другой? - PullRequest
51 голосов
/ 31 марта 2011

У меня есть два mongodbs на разных серверах, оба начинаются с --auth. Теперь я хочу скопировать БД с одного сервера на другой.

> mongo
> use admin
> db.copyDatabase("mydb","mydb","another_server")

Показывает:

{ "errmsg" : "", "ok" : 0 }

И

> db.getLastError()
null

Кажется, нет ошибки, но копия не удалась. Какую команду использовать?

Ответы [ 3 ]

83 голосов
/ 31 марта 2011

Если вы используете - auth , вам нужно будет указать здесь свое имя пользователя / пароль ...

Также вы должны находиться на «конечном» сервере при запуске команды.

db.copyDatabase(<from_db>, <to_db>, <from_hostname>, <username>, <password>);

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

25 голосов
/ 11 октября 2016

Начиная с Mongo версии 3.2 вы можете сделать это с помощью mongodump/mongorestore:

mongodump  --host <from_host> --db <from_db> --archive | mongorestore --host <to_host> --archive

Дополнительную информацию можно найти по адресу:

https://docs.mongodb.com/manual/reference/program/mongodump/ https://docs.mongodb.com/manual/reference/program/mongorestore/

Чтобы сделать удаленный доступ к Монго, вы можете создать для него туннель SSH:

создает туннель к удаленному серверу mongodb и туннелирует его через порт 27117 к локальному клиенту

ssh -fN -L 27117:localhost:27017 <remote_host> 

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

mongodump  --port 27117 --db <from_db> --archive | mongorestore --archive
22 голосов
/ 05 февраля 2016

В дополнение к ответу Джастина Дженкинса, имейте в виду, что вы также можете использовать ssh-туннель, если у вас нет доступа к сети mongodb (только localhost)

Я использую экран для переключения между «задачами». для моего удобства ssh tunnel и mongo выполняются в отдельных вкладках экрана.

шаг 1: создать туннель

ssh username@yourdomainOrIP -L 27018:localhost:27017
...Enter your password

шаг 2:

mongo
use admin
db.copyDatabase(<fromdb>,<todb>,"localhost:27018",<username>,<password)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...