복붙노트

[MONGODB] 어떻게 다른 하나 개의 MongoDB를 서버에서 데이터베이스를 복사합니까?

MONGODB

어떻게 다른 하나 개의 MongoDB를 서버에서 데이터베이스를 복사합니까?

나는 다른 서버에 두 개의 mongodbs이 모두 --auth로 시작합니다. 지금은 한 서버에서 다른 서버로 DB를 복사합니다.

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

이것은 보여준다:

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

과:

> db.getLastError()
null

오류를 보인다 없지만, 사본은 성공하지 못합니다. 사용할 올바른 명령은 무엇입니까?

해결법

  1. ==============================

    1.당신이 --auth를 사용하는 경우, 당신은 거기에 사용자 이름 / 암호를 포함해야합니다 ...

    당신이 --auth를 사용하는 경우, 당신은 거기에 사용자 이름 / 암호를 포함해야합니다 ...

    당신이 명령을 실행할 때 또한 당신은 "대상"서버에 있어야합니다.

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

    작동하지 않는 모든 경우에, 당신은 복사 할 데이터베이스의 노예를 만드는 식으로 뭔가를 시도 할 수도 있습니다 ...

  2. ==============================

    2.몽고 버전 3.2에서 시작 당신은 mongodump / mongorestore를 사용하여 작업을 수행 할 수 있습니다 :

    몽고 버전 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를 원격 서버로 터널을 만들고 로컬 클라이언트 27,117 포트를 통해 터널

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

    이 경우 명령은 수에 복원 할 로컬 컴퓨터에서 실행합니다 :

    mongodump  --port 27117 --db <from_db> --archive | mongorestore --archive
    
  3. ==============================

    3.저스틴 젠킨스의 대답 또한 당신이 MongoDB를 네트워크에 노출이없는 경우도 SSH 터널을 사용할 수 있음을 염두에 두어야 (로컬 호스트 전용)

    저스틴 젠킨스의 대답 또한 당신이 MongoDB를 네트워크에 노출이없는 경우도 SSH 터널을 사용할 수 있음을 염두에 두어야 (로컬 호스트 전용)

    나는 "작업"사이를 전환 할 화면을 사용합니다. 내 편의를 위해 SSH 터널 및 MongoDB를 별도의 화면 탭에서 실행됩니다.

    1 단계 : 터널을 만드는

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

    2 단계 :

    mongo
    use admin
    db.copyDatabase(<fromdb>,<todb>,"localhost:27018",<username>,<password)
    
  4. ==============================

    4.대상 서버의 데이터베이스 이름이 원본 서버와 동일하지 않은 경우 마이크 Shauneu의 대답 이외에, 당신은 네임 스페이스를 다시 작성해야합니다. 인증 조합에서 나는 최근 몽고 버전 (> 3.4.6)을 필요로하는 --uri 옵션을 사용하여 작업이있어 ​​:

    대상 서버의 데이터베이스 이름이 원본 서버와 동일하지 않은 경우 마이크 Shauneu의 대답 이외에, 당신은 네임 스페이스를 다시 작성해야합니다. 인증 조합에서 나는 최근 몽고 버전 (> 3.4.6)을 필요로하는 --uri 옵션을 사용하여 작업이있어 ​​:

    mongodump --uri="mongodb://$sourceUser:$sourcePwd@$sourceHost/$sourceDb" --gzip --archive | mongorestore --uri="mongodb://$targetUser:$targetPwd@$targetHost/$targetDb" --nsFrom="$sourceDb.*" --nsTo="$targetDb.*" --gzip --archive
    
  5. from https://stackoverflow.com/questions/5495137/how-do-i-copy-a-database-from-one-mongodb-server-to-another by cc-by-sa and MIT license