보관된 데이터 복원
이 페이지의 내용
보관된 데이터를 Atlas 클러스터로 복원할 수 있습니다. Atlas Data Federation이 $merge 파이프라인 단계에 제공하는 대체 구문을 사용하여 데이터를 동일한 Atlas 프로젝트 내의 동일하거나 다른 Atlas 클러스터, 데이터베이스 또는 컬렉션으로 다시 이동할 수 있습니다.
참고
보관된 데이터를 복원하는 도중이나 이후에 공간 실행 부족하지 않도록 아카이브에서 복원할 데이터의 양에 따라 클러스터 를 적절히 프로비저닝해야 합니다. oplog 크기 설정에 대한 추가 기술 지침 이나 Atlas cluster 의 공간 문제 해결에 대한 자세한 내용은 지원팀 에 문의하세요.
이 페이지에서는 $merge
파이프라인 단계 또는 MongoDB 도구를 사용하여 보관된 데이터를 복원 하는 방법을 설명합니다.
필요한 액세스 권한
이 절차를 수행하려면 프로젝트에 대해 Project Data Access Admin
이상의 액세스 권한이 있어야 합니다.
절차
데이터 세트가 작은 경우 $merge
단계를 사용하여 보관된 데이터를 Atlas cluster 로 다시 이동할 수 있습니다. 이 접근 방식은 파티션 수가 많은 대규모 데이터 세트(약 1TB의 데이터)에는 권장되지 않습니다.
복원하려는 보관된 데이터가 있는 컬렉션과 관련된 온라인 보관을 일시 중지합니다.
자세한 내용은 보관 일시 중지 및 다시 시작을 참조하세요.
연결 문자열을 사용하여 Online Archive에 연결합니다.
Online 보관 에 연결하려면 Archive Only 연결 string 을 사용해야 합니다. 학습 내용은 Connect to Online 보관(온라인 아카이브에 연결하기)를 참조하세요.
를 사용하여 아카이브에서 Atlas cluster 로 데이터를 $merge
이동합니다.
Atlas 클러스터로 데이터를 다시 이동하기 위한 $merge
파이프라인 단계 구문 및 사용법에 대해 자세히 알아보려면 $merge 파이프라인 단계를 참조하세요.
예시
S3 아카이브에 있는 다음 문서를 가정해 보겠습니다.
{ "_id" : 1, "item": "cucumber", "source": "nepal", "released": ISODate("2016-05-18T16:00:00Z") } { "_id" : 2, "item": "miso", "source": "canada", "released": ISODate("2016-05-18T16:00:00Z") } { "_id" : 3, "item": "oyster", "source": "luxembourg", "released": ISODate("2016-05-18T16:00:00Z") } { "_id" : 4, "item": "mushroom", "source": "ghana", "released": ISODate("2016-05-18T16:00:00Z") }
이 문서를 Atlas 클러스터로 복원하기 위한 $merge
구문이 $merge
단계에서 item
및 source
필드를 기반으로 문서를 식별한다고 가정하겠습니다.
db.<collection>.aggregate([ { "$merge": { "into": { "atlas": { "clusterName": "<atlas-cluster-name>", "db": "<db-name>", "coll": "<collection-name>" } }, "on": [ "item", "source" ], "whenMatched": "keepExisting", "whenNotMatched": "insert" } } ])
이 예에서, 보관된 문서가 이 두 필드에서 Atlas 클러스터의 문서와 일치하는 경우, Atlas 클러스터의 문서 사본이 아카이브의 문서 사본보다 더 최근의 것이므로 Atlas는 기존 문서를 클러스터에 유지합니다. 보관된 문서가 Atlas 클러스터의 어떤 문서와도 일치하지 않는 경우, Atlas는 해당 문서를 Atlas 클러스터의 지정된 컬렉션에 삽입합니다.
데이터를 Atlas 클러스터로 다시 복원할 때 보관된 데이터에 중복된 _id
필드가 있을 수 있습니다. 이 예제에서는 $sort
단계를 _id
및 released
필드에서 $merge
단계 이전에 정렬하여 해결해야 할 중복이 있는 경우 Atlas가 최근 날짜가 있는 문서를 선택하도록 할 수 있습니다.
참고
on
필드가 여러 개 있는 경우 on
식별자 필드에 복합 고유 인덱스 를 만들어야 합니다.
db.<collection>.createIndex( { item: 1, source: 1 }, { unique: true } )
또는 각 on
식별자 필드에 대해 하나씩 임시 컬렉션에 병합을 순차적으로 지정합니다. 그런 다음 클러스터의 연결 string 을 사용하여 임시 컬렉션의 데이터를 대상 컬렉션에 병합합니다. 여전히 각 on
식별자 필드에 대해 고유 인덱스를 만들어야 합니다.
집계 단계는 background
플래그를 true
로 설정하여 배경 에서 실행 수 있습니다. mongosh
에서 이 명령을 실행 하려면 db.runCommand
을 사용합니다.
db.runCommand( "aggregate": "<collection>", "pipeline": [ { $sort: { "_id": 1, "released": 1, } }, { "$merge": { "into": { "atlas": { "clusterName": "<atlas-cluster-name>", "db": "<db-name>", "coll": "<collection-name>" } }, "on": [ "item", "source" ], "whenMatched": "keepExisting", "whenNotMatched": "insert" } } ], {"background": true} )
중복 필드 해결에 대해 자세히 알아보려면 $merge 고려 사항을 참조하세요.
Atlas 클러스터의 데이터를 확인하고 온라인 아카이브를 삭제합니다.
자세한 내용은 온라인 아카이브 삭제를 참조하세요.
참고
Atlas cluster 로 데이터를 다시 마이그레이션하는 실행 문제가 발생하는 경우 지원팀에 문의 하세요 .