자체 데이터를 Atlas Infinite 클러스터 에 로드하려면 다음 방법 중 하나를 사용합니다.
mongodump 및 mongorestore:
mongodump는 Atlas Core 클러스터 포함한 기존 MongoDB 독립형 또는 복제본 세트 에서 데이터의 바이너리 내보내기를 생성하고,mongorestore는 데이터를 Atlas Infinite 클러스터 로 로드합니다. 소스 데이터가 MongoDB deployment 에 있는 경우 이 방법을 사용합니다. 방법을 학습 MongoDB 배포에서 데이터 복원을 참조하세요.mongoimport:
mongoimport는JSON또는CSV파일 에서 Atlas Infinite 클러스터 로 문서를 로드합니다. 소스 데이터가 MongoDB 외부의 파일 에 있는 경우 이 방법을 사용합니다. 파일mongoexport또는 타사 내보내기 도구에서 가져올 수 있습니다. 방법을 학습 JSON 또는 CSV 파일에서 데이터 가져오기를 참조하세요.대량 쓰기 (write) 작업: MongoDB database 메서드는 문서 배치를 Atlas Infinite 클러스터 에 쓰기 (write) . 애플리케이션,
mongosh, Atlas UI 또는 다른 인터페이스에서 문서를 직접 생성하거나 변환할 때 이 메서드를 사용합니다.방법을 학습 직접 생성한 데이터 쓰기를 참조하세요.
이러한 각 메서드는 대상 Atlas Infinite 클러스터 의 쓰기 (write) 용량 소비합니다. 애플리케이션에 미치는 영향을 제한하려면 시스템 사용량이 많지 않거나 예약된 유지 관리 기간 동안 대용량 데이터 로드를 실행 .
전제 조건
다음 전제 조건을 완료합니다.
대상 Atlas Infinite 클러스터 생성합니다. 자세한 학습 은 Atlas Infinite 또는 Atlas Core Cluster 생성을 참조하세요.
mongodump,mongorestore또는mongoimport를 사용하려면 해당 호스팅하다 에 안정적인 최신 출시하다 버전의 MongoDB 데이터베이스 도구 설치합니다. 방법을 학습 MongoDB 데이터베이스 도구 설치 가이드 참조하세요.
MongoDB 배포에서 데이터 복원
mongodump는 기존 MongoDB 독립형 또는 복제본 세트 의 바이너리 내보내기를 생성하고,mongorestore는 해당 내보내기를 Atlas Infinite 클러스터 로 로드합니다. 내보내기에는 소스 배포서버 의 데이터, 메타데이터 및 인덱스가 포함됩니다. 기존 MongoDB 샤딩된 클러스터 에서 데이터를 복사하는 방법에 대한 지침 지원 요청을 참조하세요.
이 절차를 사용하여 Atlas Core의 무료 클러스터 또는 Flex 클러스터 에서 Atlas Infinite의 전용 클러스터 로 데이터를 마이그레이션 할 수도 있습니다. 데이터를 마이그레이션하는 대신 무료 클러스터 또는 Flex 클러스터 확장하다 하려면 무료 또는 Flex 클러스터를 전용 클러스터로 확장을 참조하세요.
이 절차에는 다운타임이 필요합니다. 소스 배포서버 에 대한 쓰기를 중지하고 mongodump 및 mongorestore를 실행 다음, 애플리케이션을 Atlas Infinite 클러스터 로 전환합니다.
고려 사항
이 절차를 실행 전에 다음 동작을 고려하세요.
데이터 일관성: 데이터 손실을 방지하려면
mongodump를 실행 전에 소스 배포서버 에 대한 쓰기를 일시 중지하세요. 세컨더리 멤버에서mongodump를 실행 경우, 쓰기를 일시 중지한 다음 덤프를 시작하기 전에 세컨더리 프라이머리 따라잡을 때까지 기다리세요.사용자 및 역할: Atlas 데이터베이스 사용자를 관리하므로
mongorestore는 기존 데이터베이스 사용자 또는 역할을 대상 클러스터 로 마이그레이션 할 수 없습니다. 대상 Atlas Infinite 클러스터 에서 애플리케이션에 필요한 데이터베이스 사용자를 생성합니다. 자세한 학습 은 데이터베이스 사용자 구성을 참조하세요.제외된 네임스페이스: 덤프의
admin및config디렉토리에는mongorestore이 Atlas Infinite 클러스터 에 추가할 수 없는 사용자 정보가 들어 있으므로 절차에서admin.*및config.*를 제외합니다.호스트 리소스:
mongodump는 소스 배포서버 에 대한 네트워크 액세스 있는 호스팅하다 에서 실행되고,mongorestore는 아카이브 파일 에 대한 액세스 과 대상 배포서버 에 대한 네트워크 액세스 있는 호스팅하다 에서 실행됩니다. 두 도구 모두 호스팅하다 의 CPU와 메모리를 사용하므로 해당 호스트의 성능에 영향을 미칠 수 있습니다.
단계
소스 배포서버 에서 데이터베이스 사용자를 설정합니다.
소스 배포서버 인증 시행하는 경우, mongodump는 마이그레이션 모든 데이터베이스 읽을 수 있는 데이터베이스 사용자로 인증해야 합니다. admin 데이터베이스 의 backup 역할 이러한 권한을 부여합니다.
소스 배포서버 에 이러한 사용자가 없는 경우 새로 만듭니다. 데이터베이스 사용자를 생성하고 관리 방법을 학습 배포서버 유형에 대한 다음 페이지를 참조하세요.
Atlas 관리형 클러스터의 경우 데이터베이스 사용자 구성을 참조하세요.
자체 관리 배포서버의 경우 자체 관리 배포서버에서 사용자 및 역할 관리를 참조하세요.
대상 Atlas Infinite 클러스터 에서 데이터베이스 사용자를 설정합니다.
mongorestore는 마이그레이션 모든 데이터베이스 에 쓰기 (write) 수 있는 데이터베이스 사용자로 인증해야 합니다. 대상 Atlas Infinite 클러스터 의 Atlas admin 역할 이러한 권한을 부여합니다.
대상 Atlas Infinite 클러스터 에 이러한 사용자가 없는 경우 사용자를 생성하세요. Atlas 에서 데이터베이스 사용자를 생성하고 관리 방법을 학습 보려면 데이터베이스 사용자 구성을 참조하세요.
호스팅하다 네트워크에 소스 및 대상 배포서버에 대한 액세스 을 부여합니다.
mongodump 및 mongorestore를 실행 호스팅하다 두 배포에 모두 도달할 수 있는지 확인하세요.
대상 Atlas Infinite 클러스터 포함된 프로젝트 의 IP 액세스 목록 에 호스팅하다 추가합니다. IP 액세스 목록 에 호스팅하다 추가하는 방법을 학습 IP 액세스 목록 항목 구성을 참조하세요.
소스 배포서버 다른 프로젝트 의 Atlas Core 클러스터 인 경우 해당 프로젝트의 IP 액세스 목록 에 호스팅하다 도 추가하세요. 소스 배포서버 자체 관리되는 경우 호스팅하다 의 연결을 허용하도록 방화벽 구성합니다. 자세히 학습 네트워크 및 구성 강화를 참조하세요.
VPC 피어링을 설정하다 한 경우, 상대방의 VPC CIDR 차단 이나 서브넷 또는 상대방 VPC 의 보안 그룹 IP 액세스 목록 에 추가할 수 있습니다. 자세히 학습 IP 액세스 목록을 참조하세요.
mongodump를 실행합니다.
mongodump명령을 조합합니다.다음
mongodump명령 템플릿은 연결 문자열 사용하여 소스 복제본 세트 또는 독립형 클러스터 에 연결하고 덤프 아카이브를 파일 로 출력합니다.템플릿을 원하는 텍스트 편집기에 복사하고
<connectionString>자리 표시자를 소스 배포서버 대한 연결 문자열 로 바꾸고<fileName>을 생성할 아카이브 파일 의 이름으로 바꿉니다.mongodump --uri "<connectionString>" --archive=<fileName>.archive 소스 배포서버 에 대한 연결 문자열 구성하는 방법을 학습 연결 문자열을 참조하세요.
참고
Ubuntu 에서
mongorestore또는mongodump를 사용하는 18 경우.04 옵션과cannot unmarshal DNS함께 SRV 연결 문자열(mongodb+srv://형식)을 사용할 때 오류 메시지가 표시될--uri수 있습니다. 이 경우 다음 옵션 중 하나를 대신 사용합니다.비SRV 연결 문자열 있는
--uri옵션(mongodb://형식)직접 연결할 호스트를 지정하는
--host옵션
소스 배포서버 에 대한 네트워크 액세스 이 있는 호스팅하다 의 명령 프롬프트 또는 터미널에서 완료된 명령을 실행합니다.
예시
다음
mongodump명령은admin에서backup역할 가진 데이터베이스 사용자의 사용자 이름 (mySourceUsername) 및 비밀번호(mySourcePassword)가 포함된 SRV 연결 문자열 사용하여 소스 Atlas Core 클러스터 에 연결합니다. 데이터베이스 . 이 명령은 현재 작업 디렉토리 의mongodump.archive파일 에 덤프 아카이브를 출력합니다.mongodump --uri "mongodb+srv://mySourceUsername:mySourcePassword@cluster0.example.mongodb.net" \ --archive="mongodump.archive"
mongorestore를 실행합니다.
mongorestore명령을 조합합니다.다음
mongorestore명령 템플릿은 연결 문자열 사용하여 대상 Atlas Infinite 클러스터 에 연결하고mongodump에서 생성된 아카이브를 복원합니다.--nsExclude을 사용하여 Atlas 관리하는admin및config데이터베이스를 제외합니다.템플릿을 원하는 텍스트 편집기에 복사하고 다음 자리 표시자를 적절한 값으로 바꿉니다.
<connectionString>: 이 문자열을 대상 Atlas Infinite 클러스터 의 SRV 연결 문자열 로 바꿉니다. 대상 클러스터 에 대한 연결 문자열 조회 하거나 구성하려면 연결 문자열을 참조하세요.연결 문자열 에
Atlas admin역할 가진 데이터베이스 사용자의 사용자 이름 과 비밀번호를 포함합니다.<filePath>: 이 경로를mongodump가 생성한 아카이브 파일 의 경로로 바꿉니다.
mongorestore --uri "<connectionString>" \ --archive="<filePath>" \ --nsExclude "admin.*" \ --nsExclude "config.*" mongodump가 생성한 아카이브 파일 에 액세스 할 수 있는 호스팅하다 의 명령 프롬프트 또는 터미널에서 완료된 명령을 실행합니다.예시
다음
mongorestore명령은Atlas admin역할 가진 데이터베이스 사용자의 사용자 이름 (myDestinationUsername)과 비밀번호(myDestinationPassword)가 포함된 SRV 연결 문자열 사용하여 Atlas Infinite 클러스터 에 연결합니다. 이 명령은admin및config데이터베이스를 제외하고mongodump에 의해 생성된mongodump.archive에 아카이브를 복원합니다.mongorestore --uri "mongodb+srv://myDestinationUsername:myDestinationPassword@cluster0.example.mongodb.net" \ --archive="mongodump.archive" \ --nsExclude "admin.*" \ --nsExclude "config.*"
JSON 또는 CSV 파일에서 데이터 가져오기
mongoimport는 JSON 또는 CSV 파일 읽고 각 기록 Atlas Infinite 클러스터 의 컬렉션 에 삽입합니다. 파일 타사 내보내기 도구에서 가져올 수 있습니다. MongoDB deployment 에서 Atlas Infinite 클러스터 로 데이터를 복원 하려면 MongoDB 배포에서 데이터 복원을 참조하세요.
고려 사항
이 절차를 실행 전에 다음 동작을 고려하세요.
확장 JSON:
mongoimport는 특정 BSON types에 엄격한 모드 표현을 사용합니다.문서 전용:
mongorestore와 달리mongoimport는 컬렉션 옵션이나 인덱스 정의가 아닌 문서만 로드합니다. 가져오기가 완료된 후 대상 Atlas Infinite 클러스터 에 인덱스를 생성합니다.호스트 리소스:
mongoimport는 파일 보관하는 호스팅하다 에서 실행되며 해당 호스팅하다 의 CPU와 메모리를 사용합니다.기타 인터페이스: 명령줄 없이 파일 로드하려면
JSON및CSV파일을 가져오는 MongoDB Compass 또는 붙여넣거나 입력한JSON문서를 삽입하는 Atlas UI 사용합니다.
단계
Atlas 에서 프로젝트 의 Database & Network Access 페이지로 이동합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 프로젝트가 포함된 조직을 선택합니다.
아직 표시되지 않은 경우 내비게이션 바의 Projects 메뉴에서 프로젝트를 선택합니다.
사이드바에서 Security 제목 아래의 Database & Network Access를 클릭합니다.
데이터베이스 & 이전 단계를 완료하면 네트워크 액세스 페이지가 표시됩니다.
대상 Atlas cluster 에서 데이터베이스 사용자를 설정합니다.
mongoimport를 실행 Atlas cluster 에 쓰기 (write) 려면 데이터를 가져올 데이터베이스 에서 readWrite 권한이 있는 데이터베이스 사용자를 지정해야 합니다. 예시 를 들어 Atlas admin 역할 있는 사용자는 이러한 권한을 제공합니다.
해당 사용자가 없는 경우 사용자를 만듭니다:
아직 표시되지 않은 경우 Database Users 탭을 클릭합니다.
딸깍 하는 소리 Add New Database User.
Atlas admin 0} 사용자를 추가합니다.
Atlas 에서 프로젝트 의 Clusters 페이지로 이동합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.
사이드바에서 Database 제목 아래의 Clusters를 클릭합니다.
Clusters(클러스터) 페이지가 표시됩니다.
IP 액세스 목록을 업데이트합니다.
를 실행 호스팅하다 IP 액세스 목록에 없는 mongoimport 경우 목록을 업데이트 . 다음 중 하나를 지정할 수 있습니다.
mongoimport가 실행될 서버의 공용 IP 주소 또는VPC 피어링을 설정한 경우, 클라우드 공급자로 AWS를 선택했다면 상대방의 VPC CIDR 블록(또는 서브넷) 또는 상대방 VPC의 보안 그룹(Security Group) 중 하나를 사용해야 합니다.
대상 클러스터 URI/ 호스팅하다 정보를 복사합니다.
연결 문자열 URI을 사용하여 Atlas 클러스터에 연결할 수 있습니다. 연결 대화 상자에서 다음 단계를 수행합니다.
Drivers를 클릭합니다.
1단계에서 찾은 연결 문자열을 복사합니다.
패스워드를 루트 유저의 비밀번호로 바꾸고, 데이터베이스는 연결하고자 하는 데이터베이스의 이름으로 바꿉니다.
중요
제공된
@에서<PASSWORD>문자의 인스턴스를 모두 이스케이프해야 합니다. 예를 들면p@ssword는p%40ssword이어야 합니다.
이 연결 문자열 mongoimport --uri 옵션에서 로 지정됩니다.
--host을 사용하는 경우 Atlas 클러스터가 복제본 세트라면 복제본 세트 이름도 검색해야 합니다. 예시:
myAtlasRS/atlas-host1:27017,atlas-host2:27017,atlas-host3:27017
사용자가 생성하는 데이터 쓰기
대량 쓰기 (write) 작업은 한 번의 요청 으로 Atlas Infinite 클러스터 에 많은 쓰기를 전송하므로 네트워크 왕복이 줄어들고 쓰기 (write) 처리량 증가합니다. 기존 배포서버 또는 파일 에서 데이터를 복사하는 대신 쓰기 (write) 하는 문서를 Atlas Infinite 클러스터 에 쓰려면 이 방법을 선택합니다.
고려 사항
이 절차를 실행 전에 다음 동작을 고려하세요.
대량 쓰기 (write) 동작: 대량 쓰기 (write) 요청 에서 지정하는 쓰기 (write) 작업 및 옵션은 MongoDB 쓰기 (write) 작업을 주문하고, 오류를 처리하고, 요청 결과를 보고하는 방법을 결정합니다. 이러한 선택 사항이 대량 쓰기 (write) 동작에 어떤 영향을 미치는지 학습 보려면
bulkWrite()참조 페이지를 참조하세요.기타 인터페이스: 일괄 처리 로직 없이 소량의 문서를 쓰기 (write) 하려면
mongosh또는 MongoDB 운전자 의insertMany()또는insertOne()를 사용하거나, 붙여넣거나 입력한JSON문서를 삽입하는 Atlas UI 사용합니다.
단계
Atlas Infinite 클러스터 에 연결합니다.
이 절차의 대량 쓰기 (write) 작업을 실행 하려면 mongosh를 사용하여 클러스터 에 연결하세요. 방법을 학습 Atlas 클러스터에 연결을 참조하세요.
또한 MongoDB 운전자 사용하여 애플리케이션 코드, Atlas UI 또는 클러스터 에 연결된 다른 인터페이스에서 대량 쓰기 (write) 작업을 실행 수도 있습니다. 각 인터페이스에서 해당하는 작업에 대해 학습 대량 쓰기 작업을 참조하세요.
대량 쓰기 (write) 작업을 실행합니다.
단일 컬렉션 에 쓰기 (write) 려면 bulkWrite()를 실행 . 쓰기 (write) 작업 유형 및 대량 쓰기 (write) 옵션에 대해 자세히 학습 bulkWrite()를 참조하세요.
예시 들어, 다음 명령은 inventory 컬렉션 에 두 개의 문서를 삽입합니다.
db.inventory.bulkWrite( [ { insertOne: { document: { _id: ObjectId("68b1c2d3e4f5a6b7c8d9e0f1"), item: "notebook", qty: 50 } } }, { insertOne: { document: { _id: ObjectId("68b1c2d3e4f5a6b7c8d9e0f2"), item: "pencil", qty: 100 } } } ] )
한 번의 요청 으로 여러 컬렉션 또는 데이터베이스에 쓰기 (write) bulkWrite()를 실행 각 작업에 대한 네임스페이스 지정합니다. 예시 들어, 다음 명령은 sales.inventory 컬렉션 에 문서 한 개를 삽입하고 supplies.inventory 컬렉션 에 문서 한 개를 삽입합니다.
db.getMongo().bulkWrite( [ { namespace: "sales.inventory", name: "insertOne", document: { item: "notebook", qty: 50 } }, { namespace: "supplies.inventory", name: "insertOne", document: { item: "pencil", qty: 100 } } ] )
기본값 으로 대량 쓰기 (write) 작업은 순서대로 실행 첫 번째 오류가 발생하면 중지됩니다. 실행 순서를 구성하는 방법을 학습 작업 실행을 참조하세요.
결과를 확인합니다.
작업에서 반환하는 개수를 검토하고 각 대상 컬렉션 에서 문서 개수를 확인합니다.자세한 학습 은 출력을 참조하세요.
대량 쓰기 (write) 작업의 오류를 처리하다 방법을 학습 오류 처리를 참조하세요.
제한 사항
Atlas Infinite의 공개 미리 보기 제한 사항 전체 목록은 공개 미리 보기 가용성에 있습니다. Atlas Infinite 클러스터 에 데이터를 로드할 때는 다음과 같은 제한 사항이 적용 .
oplog 재생 없음: Atlas Infinite는 oplog 재생을 지원 하지 않습니다. Atlas Infinite 클러스터에는
mongodump --oplog옵션 또는mongorestore --oplogReplay옵션을 사용하지 마세요.Queryable Encryption 및 클라이언트 측 필드 레벨 암호화 : Queryable Encryption 또는 클라이언트 측 필드 레벨 암호화 사용하는 컬렉션 에는
mongodump또는mongorestore를사용할 수 없습니다.에디션 간 실시간 마이그레이션 및 복원: Atlas Infinite는 Atlas Core와 Atlas Infinite 클러스터 간의 실시간 마이그레이션 또는 백업 및 복원 지원 하지 않습니다. 두 배포서버 옵션의 아키텍처 차이로 인해 스냅샷과 실시간 마이그레이션이 호환되지 않습니다.