source

데이터베이스를 한 MongoDB 서버에서 다른 서버로 복사하려면 어떻게 해야 합니까?

ittop 2023. 5. 27. 11:59
반응형

데이터베이스를 한 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 서버로 복사하는 데 도움이 되었습니다.

  1. 데이터베이스를 복원할 서버에서 다음 명령을 실행해야 합니다.
   ssh -fN -L 27018:127.0.0.1:27017 <remote_host_ip>
  1. 이제 원격 서버 데이터베이스를 로컬 서버 포트 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
  1. [옵션] 다음과 같이 복원된 데이터베이스를 확인할 수 있습니다.
   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

반응형