MongoDB에서 데이터베이스 복사/복제

Tahseen Tauseef 2024년2월15일
  1. db.collection.copyTo() 명령을 사용하여 MongoDB에서 데이터베이스 복사/복제
  2. db.collection.find().forEach() 명령을 사용하여 MongoDB에서 데이터베이스 복사/복제
  3. mongodumpmongorestore 도구를 사용하여 MongoDB에서 데이터베이스 복사/복제
  4. mongoexportmongoimport 도구를 사용하여 MongoDB에서 데이터베이스 복사/복제
  5. NoSQL Manager for MongoDB의 중복 수집 도구
  6. NoSQL Manager for MongoDB의 다른 데이터베이스 도구로 컬렉션 복사
MongoDB에서 데이터베이스 복사/복제

사용자가 동일한 MongoDB 데이터베이스 내에서 또는 다른 MongoDB 데이터베이스로 컬렉션을 복제할 수 있는 여러 가지 방법이 있습니다. 이 MongoDB 튜토리얼 기사에서는 사용자가 MongoDB의 데이터베이스와 해당 데이터를 복사/복제하는 방법에 대해 설명합니다.

db.collection.copyTo() 명령을 사용하여 MongoDB에서 데이터베이스 복사/복제

이 명령은 서버측 JavaScript를 사용하여 collection에서 newCollection으로 모든 문서를 복사합니다. MongoDB는 존재하지 않는 경우 새 컬렉션을 생성합니다.

권한이 활성화된 경우 db.collection.copyTo()를 실행하려면 모든 리소스에 대한 모든 작업이 있어야 합니다. 비즈니스에서 사용자가 db.collection.copyTo()를 실행해야 하는 경우 anyResource에서 anyAction을 부여하는 역할을 구성하십시오.

다른 사용자에게 이 역할을 할당하면 안 됩니다.

모수 유형 설명
newCollection 데이터가 기록되는 컬렉션의 이름입니다.

db.collection.copyTo()를 사용하는 동안 필드 유형을 확인하여 작업이 BSON에서 JSON으로 변환하는 동안 문서에서 유형 정보를 삭제하지 않는지 확인하십시오.

내부적으로 eval 명령은 db.collection.copyTo() 메서드에서 사용됩니다. 결과적으로 db.collection.copyTo() 작업은 전역 잠금을 사용하여 db.collection.copyTo() 작업이 완료될 때까지 다른 읽기 또는 쓰기 활동을 방지합니다.

복사된 문서의 수는 copyTo()에 의해 반환됩니다. 복사에 실패하면 예외가 발생합니다. copyTo()eval을 내부적으로 사용하기 때문에 mongod 인스턴스의 복사 작업은 다른 모든 작업을 차단합니다.

예를 들어 다음 작업은 source 컬렉션의 모든 문서를 target 컬렉션으로 복사합니다.

db.collection1.copyTo("collection2")
  1. 이 명령은 MongoDB 4.0 이하 버전에서만 실행할 수 있습니다.
  2. 컬렉션을 동일한 데이터베이스에만 복제합니다.
  3. 매우 느립니다.
  4. 컬렉션 속성 및 인덱스를 복사하지 않습니다.

db.collection.find().forEach() 명령을 사용하여 MongoDB에서 데이터베이스 복사/복제

이 명령은 각 문서에 JavaScript 함수를 적용하여 커서를 반복합니다. forEach() 메서드의 프로토타입 형식은 다음과 같습니다.

db.collection.find().forEach(<function>)

forEach() 메소드에는 다음 매개변수가 있습니다.

모수 유형 설명
function 자바스크립트 A 자바스크립트function to apply to each document from the cursor. The <function> signature includes a single argument passed the current document to process.

예:

db.collection1.find().forEach(
function(docs){
db.collection2.insert(docs);
})
  1. 이 명령은 컬렉션을 동일한 서버에만 복제할 수 있습니다.
  2. 매우 느립니다.
  3. 컬렉션 속성 및 인덱스를 복사하지 않습니다.

mongodumpmongorestore 도구를 사용하여 MongoDB에서 데이터베이스 복사/복제

이전 버전의 MongoDB에서 데이터베이스를 복제하려면 copyDB 명령 또는 도우미 메서드인 db.copyDatabase()를 사용할 수 있습니다. 그러나 MongoDB는 나중에 이를 더 이상 사용하지 않습니다.

또한 MongoDB 4.2 버전부터 copydb 명령과 db.copyDatabase() 메서드가 삭제되었으므로 MongoDB 4.2 이상을 사용하는 경우 사용할 수 없습니다. 그러나 MongoDB 데이터베이스를 복제하는 다른 접근 방식이 있습니다.

MongoDB 데이터베이스 도구를 사용하여 MongoDB에서 데이터베이스를 복제할 수 있습니다. mongodumpmongorestore 명령을 사용할 수 있습니다.

MongoDB 데이터베이스 도구는 MongoDB를 처리하기 위한 명령줄 도구 모음입니다. MongoDB 데이터베이스 도구가 설치되어 있는지 확실하지 않은 경우 터미널 또는 명령 프롬프트를 사용하여 다음을 확인하십시오.

mongodump --version
mongorestore --version

이 코드는 주로 mongodumpmongorestore. 버전을 찾습니다. 아직 가지고 있지 않은 경우 MongoDB 웹 사이트에 있는 설치 지침에 따라 PC에 MongoDB 데이터베이스 도구를 설치할 수 있습니다.

mongodumpmongorestore(예: 새 터미널 또는 명령 프롬프트 창)를 실행하려면 시스템의 명령줄을 사용해야 합니다. mongo 셸에서 실행하면 안 됩니다.

다음은 데이터베이스 복제 코드의 예입니다.

mongodump --archive --db=CatHotel | mongorestore --archive  --nsFrom='CatHotel.*' --nsTo='CatHouse.*'

이 경우 CatHotel 데이터베이스를 백업한 다음 모든 컬렉션을 CatHouse라는 데이터베이스로 복원합니다. 즉, CatHotel 데이터베이스를 CatHouse로 복제했습니다.

이것은 mongodump를 사용하여 데이터베이스 백업 파일을 생성한 다음 mongorestore를 사용하여 새 이름으로 데이터베이스를 복원합니다. 먼저 데이터베이스를 표준 출력 스트림으로 덤프하고 mongorestore로 연결했습니다.

다음은 각 매개변수가 수행하는 작업입니다.

모수 설명
archive 아카이브 파일이 지정되지 않은 경우 지정된 아카이브 파일 또는 표준 출력(stdout)에 출력을 기록합니다. 귀하의 경우 아카이브 파일이 지정되지 않아 표준 출력에 기록됩니다.
db 백업할 데이터베이스를 지정합니다. 이 경우 CatHotel 데이터베이스를 백업합니다.
nsFrom 덤프 파일에 컬렉션을 지정합니다. 별표 와일드카드(*)는 모든 컬렉션을 의미합니다.
nsTo 복원된 데이터베이스에서 사용해야 하는 컬렉션 이름을 지정합니다.

mongodump를 사용하여 모든 데이터베이스를 덤프하고 매개변수 없이 실행할 수도 있습니다. 그러나 이를 수행할 때 localconfig 데이터베이스는 덤프에 포함되지 않습니다.

  1. 고속방식이다.
  2. 컬렉션을 다른 데이터베이스 및 서버에 복제할 수 있습니다.

mongoexportmongoimport 도구를 사용하여 MongoDB에서 데이터베이스 복사/복제

MongoDB 도구 패키지에는 mongoexportmongoimport 도구가 포함되어 있습니다. 도구 패키지는 MongoDB 다운로드 센터에서 다운로드할 수 있습니다.

예를 들어 명령줄에서 아래 명령을 실행합니다.

mongoexport.exe /host:<host> /port:<port> /db:test /collection:collection1 /out:collection1.json
mongoimport.exe /host:<host> /port:<port> /db:test /collection:collection2 /file:collection1.json
  1. 빠른 방법입니다.
  2. 컬렉션을 다른 데이터베이스 및 서버에 복제할 수 있습니다.
  3. 컬렉션 속성 및 인덱스를 복사하지 않습니다.

NoSQL Manager for MongoDB의 중복 수집 도구

중복 컬렉션은 전문적인 기능입니다. 동일한 데이터베이스 내에서 컬렉션을 매우 빠르게 복제할 수 있습니다.

DB 탐색기에서 collection1 컬렉션을 마우스 오른쪽 버튼으로 클릭하고 팝업 메뉴에서 collection1 컬렉션 항목 복제를 선택합니다.

Duplicate Collection

대상 컬렉션 이름, 복제 매개변수를 지정하고 복제를 클릭합니다.

중복 컬렉션 1

  1. 고속방식이다.
  2. 컬렉션 속성과 인덱스를 복사합니다.
  3. 동일한 데이터베이스에만 컬렉션을 복제할 수 있습니다.

NoSQL Manager for MongoDB의 다른 데이터베이스 도구로 컬렉션 복사

Copy Collection to another Database는 MongoDB Pro용 NoSQL Manager의 전문 기능입니다. 데이터베이스와 서버 간에 하나 이상의 컬렉션을 복사할 수 있습니다.

DB 탐색기에서 collection1을 마우스 오른쪽 버튼으로 클릭하고 팝업 메뉴에서 collection1 컬렉션을 다른 데이터베이스 항목으로 복사를 선택합니다.

Duplicate Collection 2

대상 데이터베이스 및 추가 매개변수를 지정하고 실행을 클릭하십시오.

중복 컬렉션 3

  1. 빠른 방법입니다.
  2. 컬렉션 속성과 인덱스를 복사합니다.
  3. 컬렉션을 다른 데이터베이스 및 서버에 복사할 수 있습니다.
  4. 한 번에 여러 컬렉션을 복사할 수 있습니다.
  5. 컬렉션의 이름을 바꿀 수 없습니다.

관련 문장 - MongoDB Database