programing

데이터와 함께 mongodb 데이터베이스 복사/클론

mailnote 2023. 5. 1. 21:41
반응형

데이터와 함께 mongodb 데이터베이스 복사/클론

나는 나의 Mongo 데이터베이스를 그것의 데이터와 함께 복사해야 합니다.난 시도했다.

db.copyDatabase( "Old_db", "new_db", "localhost" )

하지만 문제는 이전 데이터가 아닌 빈 DB만 복사한다는 것입니다.

2019년 2월

부터db.copyDatabase()v4.0에서 더 이상 사용되지 않습니다. 사용해야 합니다.mongodump그리고.mongorestore대신:

mongodump 
    --host <source host:port> 
    --ssl 
    --username <username> 
    --password <password> 
    --authenticationDatabase admin 
    --db <sourceDbName> 
    --collection <collection-name>

mongodump명령은 전체 데이터베이스를 이름이 지정된 로컬 폴더로 내보냅니다.dump/<sourceDbName>기본적으로 다음을 사용합니다.mongorestore대상 데이터베이스로 가져오는 명령:

mongorestore 
    --host <target host:port> 
    --ssl 
    --username <username> 
    --password <password> 
    --authenticationDatabase admin 
    --db <targetDbName>
    --collection <collection-name>
    <dump folder/file>

예:

# backup the whole db (mydb-old):
mongodump -h Cluster0-shard-0/sample-shard-00-00-xyz.mongodb.net:27017 \
--ssl -u user1 -p 123123 --authenticationDatabase admin \
-d mydb-old

# backup only one collection (mydb-old.users):
mongodump -h Cluster0-shard-0/sample-shard-00-00-xyz.mongodb.net:27017 \
--ssl -u user1 -p 123123 --authenticationDatabase admin \
-d mydb-old -c users

# restore the whole db (mydb-old) to mydb-new:
mongorestore -h Cluster0-shard-0/sample-shard-00-00-xyz.mongodb.net:27017 \
--ssl -u user1 -p 123123 --authenticationDatabase admin \
-d mydb-new dump/mydb-old

# restore only one collection (mydb-old.users) to mydb-new.users:
mongorestore -h Cluster0-shard-0/sample-shard-00-00-xyz.mongodb.net:27017 \
--ssl -u user1 -p 123123 --authenticationDatabase admin \
-d mydb-new -c users dump/mydb-old/users.bson

자세히 알아보기:

copydb 또는 clone 또는 해당 도우미를 사용할 수 있습니다.copyDatabase()또는cloneDatabase()하지만 다음과 같은 몇 가지 고려 사항이 있습니다.

http://docs.mongodb.org/v2.2/tutorial/copy-databases-between-instances/ #요구사항

아마도 당신은 그것들 중 일부를 촉발하고 있을 것입니다.

방금 테스트했습니다.

db.copyDatabase("test","testCopy","127.0.0.1") 

그리고 완벽하게 작동했습니다.

성공하셨다면 저희에게 알려주세요.

MongoDB v4.2+의 경우:

연상의copyDatabase그리고.cloneDatabase사용되지 않습니다.다음의 조합을 사용해야 합니다.mongodump그리고.mongorestore대신.

예:

원본 DB: [ 이름 =olddb(호스트 =)localhost포트 =27017) ]

대상 DB: [ 이름 =newdb(호스트 =)localhost포트 =27017) ]

접근 1 - 보관 파일 사용:

1 - mongodump를 실행하여 시스템을 덤프합니다.olddb데이터베이스를 보관소로mongodump-old-db:

mongodump --archive="mongodump-old-db" --db=olddb --host=localhost --port=27017

2 - 다음을 사용하여 mongore 복원 실행--nsFrom그리고.--nsTo아카이브에서 복원(데이터베이스 이름 변경):

mongorestore --archive="mongodump-old-db" --nsFrom='olddb.*' --nsTo='newdb.*' --host=localhost --port=27017

접근 2 - 표준 출력 스트림 사용:

보관 파일을 사용하는 대신, 당신은 몽고 덤프를 할 수 있습니다.olddb데이터베이스를 표준 출력 스트림으로 변환하고 mongore restore로 연결합니다.

그냥 실행:

mongodump --archive --db=olddb --host=localhost --port=27017 | mongorestore --archive  --nsFrom='olddb.*' --nsTo='newdb.*' --host=localhost --port=27017

: 필요에 따라 uri(--uri) 또는 호스트(--host), 포트(--port), 사용자 이름(--username), 암호(--password) 또는 기타 옵션과 같은 추가 옵션을 포함할 수 있습니다.

출처: 해당 주제와 관련된 공식 MongoDB Docs.

인증이 필요한 경우:

db.copyDatabase('crm', 'crm_copy', 'localhost', 'admin', '123456')

방금 동료의 데이터/db 파일을 복사했는데 완벽하게 작동했습니다.연결/통화를 종료하기 전에 종료하는 것이 좋습니다.

저는 데몬을 보는 것을 추천합니다.다시 초기화해야 하는 상황이 발생했습니다(복제본 세트가 있는 경우).

MongoChef를 사용하면 매우 쉽게 수행할 수 있습니다. 동일한 데이터베이스를 로컬로 만든 다음 원본 컬렉션을 복사한 다음 로컬로 새로 만든 db로 전달합니다.

언급URL : https://stackoverflow.com/questions/14846712/copy-clone-mongodb-database-along-with-its-data

반응형