Atlas Infinite 클러스터에 자체 데이터를 로드하려면 다음 방법 중 하나를 사용하세요.
mongodump 및 mongorestore:
mongodump는 Atlas Core 클러스터를 포함하여 기존 MongoDB 독립형 또는 복제본 세트에서 데이터의 바이너리 내보내기를 생성하고,mongorestore는 데이터를 Atlas Infinite 클러스터로 로드합니다. 소스 데이터가 MongoDB 배포서버 에 있는 경우 이 방법을 사용하세요. 방법을 알아보려면 MongoDB 배포서버 에서 데이터 복원을 참조하세요.mongoimport:
mongoimport는JSON또는CSV파일에서 Atlas Infinite 클러스터로 문서를 로드합니다. 소스 데이터가 MongoDB 외부 파일에 있을 때 이 방법을 사용하세요. 파일은mongoexport또는 타사 내보내기 도구에서 가져올 수 있습니다. 방법을 알아보려면 JSON 또는 CSV 파일에서 데이터 가져오기를 참조하세요.대량 쓰기 (write) 작업: MongoDB 데이터베이스 메서드는 문서 배치를 Atlas Infinite 클러스터에 쓰기 (write)합니다. 애플리케이션,
mongosh, Atlas UI 또는 다른 인터페이스에서 직접 문서를 생성하거나 변환할 때 이 메서드를 사용하세요. 방법을 알아보려면 직접 생성한 데이터 쓰기 (write)를 참조하세요.
이러한 각 메서드는 대상 Atlas Infinite 클러스터의 쓰기 (write) 용량을 소비합니다. 애플리케이션에 미치는 영향을 제한하려면 시스템 사용량이 적은 시간대나 예약된 유지 관리 기간 동안 대규모 데이터 로드를 실행하세요.
전제 조건
다음 사전 요구 사항을 완료하세요.
대상 Atlas Infinite 클러스터를 생성합니다. 자세한 내용은 Atlas Infinite 또는 Atlas Core 클러스터 생성을 참조하세요.
mongodump,mongorestore또는mongoimport을(를) 사용하려면 해당 호스트에 최신 안정 버전의 MongoDB Database Tools를 설치하세요. 방법을 알아보려면 MongoDB Database Tools 설치 가이드를 참조하세요.
MongoDB 배포서버에서 데이터 복원
mongodump은(는) 기존 MongoDB 독립형 또는 복제본 세트의 바이너리 내보내기를 생성하고, mongorestore은(는) 해당 내보내기를 Atlas Infinite 클러스터로 로드합니다. 내보내기에는 소스 배포서버의 데이터, 메타데이터 및 인덱스가 포함됩니다. 기존 MongoDB 샤딩된 클러스터에서 데이터를 복사하는 방법에 대한 지침은 지원 요청을 참조하세요.
이 절차를 사용하여 Atlas Core의 Free 클러스터 또는 Flex 클러스터에서 Atlas Infinite의 전용 클러스터로 데이터를 마이그레이션할 수도 있습니다. 데이터를 마이그레이션하는 대신 Free 클러스터 또는 Flex 클러스터를 제자리에서 확장하려면 Free 또는 Flex 클러스터를 전용 클러스터로 확장을 참조하세요.
이 절차를 수행하려면 다운타임이 필요합니다. 소스 배포서버에 대한 쓰기 (write)를 중지하고 mongodump 및 mongorestore를 실행한 다음 애플리케이션을 Atlas Infinite 클러스터로 전환합니다.
고려 사항
이 절차를 실행하기 전에 다음 동작을 고려하십시오.
사용자 및 역할: Atlas는 데이터베이스 사용자를 관리하므로
mongorestore은(는) 기존 데이터베이스 사용자나 역할을 대상 클러스터로 마이그레이션할 수 없습니다. 대상 Atlas Infinite 클러스터에서 애플리케이션에 필요한 데이터베이스 사용자를 만듭니다. 자세히 알아보려면 데이터베이스 사용자 구성을 참조하세요.제외된 네임스페이스: 덤프의
admin및config디렉토리에는mongorestore가 Atlas Infinite 클러스터에 추가할 수 없는 사용자 정보가 포함되어 있으므로 이 절차에서는admin.*및config.*을 제외합니다.호스팅하다 리소스:
mongodump은(는) 소스 배포서버에 대한 네트워크 액세스 권한이 있는 호스팅하다에서 실행되고,mongorestore은(는) 보관 파일에 대한 액세스 권한과 대상 배포서버에 대한 네트워크 액세스 권한이 있는 호스팅하다에서 실행됩니다. 두 도구 모두 호스팅하다의 CPU와 메모리를 사용하므로 호스팅하다의 성능에 영향을 줄 수 있습니다.
단계
소스 배포서버에서 데이터베이스 사용자를 설정합니다.
소스 배포에서 인증을 시행하는 경우 mongodump는 마이그레이션하는 모든 데이터베이스를 읽을 수 있는 데이터베이스 사용자로 인증해야 합니다. admin 데이터베이스의 backup 역할은 이러한 권한을 부여합니다.
소스 배포서버에 해당 사용자가 없는 경우 하나를 만드세요. 데이터베이스 사용자를 생성하고 관리하는 방법을 알아보려면 배포서버 유형에 맞는 다음 페이지를 참조하세요.
Atlas에서 managed하는 클러스터의 경우 데이터베이스 사용자 구성을 참조하세요.
자체 관리형 배포서버의 경우 자체 관리형 배포서버에서 사용자 및 역할을 관리합니다.를 참조하세요.
대상 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 18.04 에서
mongodump또는mongorestore를 사용하는 경우--uri옵션과 함께 SRV 연결 문자열 (mongodb+srv://형식)을 사용할 때cannot unmarshal DNS오류 메시지가 표시될 수 있습니다. 이 경우 다음 옵션 중 하나를 대신 사용합니다.비SRV 연결 string 이 있는
--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 클러스터에 연결합니다. 이 명령은mongodump이mongodump.archive에 생성한 보관을 복원하며,admin및config데이터베이스는 제외합니다.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 배포서버에서 Atlas Infinite 클러스터로 데이터를 복원하려면 MongoDB 배포서버에서 데이터 복원을 참조하세요.
고려 사항
이 절차를 실행하기 전에 다음 동작을 고려하십시오.
Extended 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 클러스터에서 데이터베이스 사용자를 설정하세요.
Atlas 클러스터에 쓰기 (write) 작업을 수행하기 위해 mongoimport를 실행하려면 데이터를 가져올 데이터베이스에서 readWrite 권한이 있는 데이터베이스 사용자를 지정해야 합니다. 예시, Atlas admin 역할을 가진 사용자는 이러한 권한을 제공합니다.
해당 사용자가 없는 경우 사용자를 만듭니다:
아직 표시되지 않은 경우 Database Users 탭을 클릭합니다.
딸깍 하는 소리 Add New Database User.
Atlas admin 0} 사용자를 추가합니다.
Atlas 에서 프로젝트 의 Clusters 페이지로 이동합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Organizations 메뉴에서 원하는 프로젝트가 포함된 조직을 선택합니다.
아직 표시되지 않은 경우 탐색 표시줄의 Projects 메뉴에서 원하는 프로젝트를 선택합니다.
사이드바에서 Database 제목 아래의 Clusters를 클릭합니다.
Clusters(클러스터) 페이지가 표시됩니다.
IP 액세스 목록을 업데이트합니다.
mongoimport를 실행할 호스트가 IP 액세스 목록에 없으면 목록을 업데이트하세요. 다음 두 가지 중 하나를 지정할 수 있습니다.
mongoimport가 실행될 서버의 공인 IP 주소 혹은VPC 피어링을 설정한 경우, 클라우드 공급자로 AWS를 선택했다면 상대방의 VPC CIDR 블록(또는 서브넷) 또는 상대방 VPC의 보안 그룹(Security Group) 중 하나를 사용해야 합니다.
대상 클러스터 URI/호스팅하다 정보를 복사합니다.
연결 문자열 URI을 사용하여 Atlas 클러스터에 연결할 수 있습니다. 연결 대화 상자에서 다음 단계를 수행합니다.
Drivers를 클릭합니다.
1단계에서 찾은 연결 문자열을 복사합니다.
패스워드를 루트 유저의 비밀번호로 바꾸고, 데이터베이스는 연결하고자 하는 데이터베이스의 이름으로 바꿉니다.
중요
제공된
@에서<PASSWORD>문자의 인스턴스를 모두 이스케이프해야 합니다. 예를 들면p@ssword는p%40ssword이어야 합니다.
이 연결 문자열은 --uri 옵션의 mongoimport로 지정됩니다.
--host을 사용하는 경우 Atlas 클러스터가 복제본 세트라면 복제본 세트 이름도 검색해야 합니다. 예시:
myAtlasRS/atlas-host1:27017,atlas-host2:27017,atlas-host3:27017생성하는 데이터 쓰기 (write)
대량 쓰기 (write) 작업은 단일 요청으로 Atlas Infinite 클러스터에 많은 쓰기 (write)를 전송하므로 네트워크 왕복 횟수가 줄어들고 쓰기 (write) 처리량이 증가합니다. 기존 배포서버나 파일에서 데이터를 복사하는 대신 이 방법을 선택하여 생성한 문서를 Atlas Infinite 클러스터에 쓰기 (write).
고려 사항
이 절차를 실행하기 전에 다음 동작을 고려하십시오.
대량 쓰기 (write) 동작: 대량 쓰기 (write) 요청에 지정하는 쓰기 (write) 작업 및 옵션은 MongoDB가 쓰기 (write) 작업의 순서를 지정하고, 오류를 처리하며, 요청에 대한 결과를 보고하는 방식을 결정합니다. 이러한 선택이 대량 쓰기 (write) 동작에 미치는 영향에 대해 학습하려면
bulkWrite()참조 페이지를 참조하십시오.기타 인터페이스: 배치 로직 없이 소수의 문서를 쓰기 (write)하려면 또는 MongoDB 드라이버의 또는
insertMany()insertOne()mongosh을 사용하거나,JSON붙여넣거나 입력한 문서를 삽입하는 Atlas UI 를 사용하세요.
단계
Atlas Infinite 클러스터에 연결합니다.
이 절차에서 대량 쓰기 (write) 작업을 실행하려면 mongosh을(를) 사용하여 클러스터에 연결하세요. 방법을 학습하려면 Atlas 클러스터에 연결을 참조하세요.
또한 MongoDB 드라이버를 사용하는 애플리케이션 코드, Atlas UI 또는 클러스터에 연결되는 기타 인터페이스에서 대량 쓰기 (write) 작업을 실행할 수 있습니다. 각 인터페이스의 해당 작업에 대해 알아보려면 대량 쓰기 (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) 작업은 순서대로 실행되며 첫 번째 오류에서 중지됩니다. 실행 순서를 구성하는 방법을 알아보려면 작업 실행을 참조하세요.
제한 사항
Atlas Infinite의 전체 공개 미리 보기 제한 사항은 공개 미리 보기 가용성에서 확인할 수 있습니다. Atlas Infinite 클러스터에 데이터를 로드할 때 다음 제한 사항이 적용됩니다.
oplog 리플레이 없음: Atlas Infinite는 oplog 리플레이를 지원하지 않습니다. Atlas Infinite 클러스터에서는
mongodump --oplog옵션이나mongorestore --oplogReplay옵션을 사용하지 마세요.Queryable Encryption 및 클라이언트 사이드 필드 레벨 암호화:
mongodump또는mongorestore는 Queryable Encryption 또는 클라이언트 사이드 필드 레벨 암호화.을 사용하는 컬렉션과 함께 사용할 수 없습니다.교차 에디션 실시간 마이그레이션 및 복원: Atlas Infinite는 Atlas Core 클러스터와 Atlas Infinite 클러스터 간에서의 실시간 마이그레이션 또는 백업 및 복원을 지원하지 않습니다. 두 가지 배포 옵션 간의 아키텍처 차이로 인해 스냅샷과 실시간 마이그레이션은 호환되지 않습니다.