데이터베이스를 한 MongoDB 서버에서 다른 서버로 복사하려면 어떻게 해야 합니까?
다른 서버에 두 개의 mongodb가 있습니다. 둘 다 처음에는--auth
이제 한 서버에서 다른 서버로 db를 복사하려고 합니다.
> mongo
> use admin
> db.copyDatabase("mydb","mydb","another_server")
표시되는 항목:
{ "errmsg" : "", "ok" : 0 }
그리고:
> db.getLastError()
null
오류가 없는 것처럼 보이지만, 복사가 성공하지 못했습니다.올바른 명령어는 무엇입니까?
--auth를 사용하는 경우 사용자 이름/암호를 포함해야 합니다.
또한 명령을 실행할 때 "대상" 서버에 있어야 합니다.
db.copyDatabase(<from_db>, <to_db>, <from_hostname>, <username>, <password>);
이 모든 것이 작동하지 않으면 복사할 데이터베이스의 슬레이브를 만드는 것과 같은 방법을 시도해 볼 수 있습니다.
출발지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/
원격 mongo에 연결할 수 있도록 하려면 원격 mongo에 대한 ssh 터널을 생성합니다.
원격 mongodb 서버에 대한 터널을 만들고 포트 27117을 통해 로컬 클라이언트에 터널링합니다.
ssh -fN -L 27117:localhost:27017 <remote_host>
이 경우 복원할 로컬 시스템에서 실행할 명령은 다음과 같습니다.
mongodump --port 27117 --db <from_db> --archive | mongorestore --archive
네트워크에 mongodb가 노출되지 않은 경우 ssh 터널을 사용할 수도 있습니다(로컬 호스트만 해당).
화면을 사용하여 "작업"을 전환합니다.내 편의를 위해 ssh 터널과 mongo는 별도의 화면 탭에서 실행됩니다.
1단계: 터널 생성
ssh username@yourdomainOrIP -L 27018:localhost:27017
...Enter your password
2단계:
mongo
use admin
db.copyDatabase(<fromdb>,<todb>,"localhost:27018",<username>,<password)
Mike Shauneu의 답변 외에도 대상 서버의 데이터베이스 이름이 원본 서버의 데이터베이스 이름과 동일하지 않으면 네임스페이스를 다시 작성해야 합니다.인증과 결합하여 이 기능을 사용할 수 있게 되었습니다.--uri
최신 mongo 버전(>3.4.6)이 필요한 옵션:
mongodump --uri="mongodb://$sourceUser:$sourcePwd@$sourceHost/$sourceDb" --gzip --archive | mongorestore --uri="mongodb://$targetUser:$targetPwd@$targetHost/$targetDb" --nsFrom="$sourceDb.*" --nsTo="$targetDb.*" --gzip --archive
다음은 제가 Ubuntu 서버에서 MongoDB v4+를 실행하는 다른 Ubuntu 서버로 복사하는 데 도움이 되었습니다.
- 데이터베이스를 복원할 서버에서 다음 명령을 실행해야 합니다.
ssh -fN -L 27018:127.0.0.1:27017 <remote_host_ip>
- 이제 원격 서버 데이터베이스를 로컬 서버 포트 27018에 매핑했습니다.다음으로 MongoDB를 사용하여 원격 서버에서 대상 서버로 복사할 수 있습니다.
mongodump/mongorestore
파이프라인:
mongodump --port 27018 --db <remote_db_name> --username <remote_db_username> --password <remote_db_password> --archive | mongorestore --username <destination_db_username> --password <destination_db_password> --archive
- [옵션] 다음과 같이 복원된 데이터베이스를 확인할 수 있습니다.
mongo --authenticationDatabase "admin" -u <destination_db_username> -p
show dbs
데이터베이스가 목록에 있는지 확인합니다.
언급URL : https://stackoverflow.com/questions/5495137/how-do-i-copy-a-database-from-one-mongodb-server-to-another
'source' 카테고리의 다른 글
git push 후 로컬 및 원격에서 git commit을 실행 취소하려면 어떻게 해야 합니까? (0) | 2023.05.27 |
---|---|
Postgre는 어디에 있습니까?macOS의 SQL 로그? (0) | 2023.05.27 |
IIS 7.5 및 ASP.NET v2가 설치된 HTTP 500.19 웹 응용 프로그램 문제(web.config 오류) (0) | 2023.05.27 |
생성자는 vb.net 의 다른 생성자를 lac#로 호출합니다. (0) | 2023.05.27 |
WPF에서 그리드 행 숨기기 (0) | 2023.05.27 |