Azure Cosmos DB에서 작업 복사(미리 보기)
컨테이너 복사 작업을 사용하여 Azure Cosmos DB에서 데이터 복사를 수행할 수 있습니다.
다음 시나리오를 수행하려면 Azure Cosmos DB 계정에서 데이터를 복사해야 할 수 있습니다.
- 한 컨테이너에서 다른 컨테이너로 모든 항목을 복사합니다.
- 처리량이 프로비저닝되는 세분성을 데이터베이스에서 컨테이너로 또는 그 반대로 변경합니다.
- 컨테이너의 파티션 키를 변경합니다.
- 컨테이너의 고유 키를 업데이트합니다.
- 컨테이너 또는 데이터베이스의 이름을 바꿉니다.
- 계정의 용량 모드를 서버리스에서 프로비전됨으로 변경하거나 그 반대로 변경합니다.
- 새 컨테이너에 대해서만 지원되는 새 기능(예: 계층적 파티션 키)을 채택합니다.
복사 작업은 Azure CLI 명령을 사용하여 만들고 관리할 수 있습니다.
시작하기
Azure Cosmos DB for NoSQL API 계정에 대한 온라인 컨테이너 복사본을 시작하려면 Azure Portal의 미리 보기 기능에서 NoSQL(온라인 컨테이너 복사본) 미리 보기 기능 플래그에 등록합니다. 등록이 완료되면 구독의 모든 NoSQL 및 API 계정에 미리 보기가 적용됩니다.
필수 조건
- 원본 Azure Cosmos DB 계정에서 연속 백업을 사용하도록 설정합니다.
- 모든 버전에 등록하고 원본 계정의 구독에서 변경 피드 모드 미리 보기 기능을 삭제합니다.
Important
원본 컨테이너에 대한 모든 쓰기 작업은 컨테이너의 항목에 대한 이전 버전과 현재 버전의 변경 내용을 모두 유지하기 위해 이중 RU가 청구됩니다. 이 RU 요금 인상은 향후 변경될 수 있습니다.
컨테이너의 데이터 복사
- 사용하려는 설정(파티션 키, 처리량 세분성, 요청 단위, 고유 키 등)을 사용하여 대상 Azure Cosmos DB 컨테이너를 만듭니다.
- 컨테이너 복사 작업을 만듭니다.
- 복사 작업의 진행률을 모니터링합니다.
- 모든 문서가 복사되면 원본 컨테이너에서 업데이트를 중지한 다음 완료 API를 호출하여 작업이 완료된 것으로 표시합니다.
- 애플리케이션 또는 클라이언트를 의도한 대로 원본 또는 대상 컨테이너를 적절하게 가리켜 작업을 다시 시작합니다.
컨테이너 복사는 어떻게 작동하나요?
- 이 플랫폼은 대상 Azure Cosmos DB 계정에 대한 서버 쪽 컴퓨팅 인스턴스를 할당하여 컨테이너 복사 작업을 실행합니다.
- 단일 작업은 언제든지 모든 인스턴스에서 실행됩니다.
- 온라인 복사 작업은 모든 버전을 활용 하고 변경 피드 모드 를 삭제하여 데이터를 복사하고 원본 컨테이너에서 대상 컨테이너로 증분 변경 내용을 복제합니다.
- 작업이 완료되면 플랫폼은 15분 동안 비활성 상태로 이러한 인스턴스를 할당 해제합니다.
오프라인 컬렉션 복사 작업을 수행하여 동일한 Azure Cosmos DB for Mongo DB 계정 내에서 데이터를 복사할 수 있습니다.
컬렉션의 데이터 복사
- 사용하려는 설정(파티션 키, 처리량 세분성, 요청 단위, 고유 키 등)을 사용하여 대상 Azure Cosmos DB 컬렉션을 만듭니다.
- 애플리케이션 인스턴스 또는 해당 인스턴스에 연결하는 클라이언트를 일시 중지하여 원본 컬렉션에 대한 작업을 중지합니다.
- 복사 작업을 만듭니다.
- 복사 작업의 진행률을 모니터링하고 완료될 때까지 기다립니다.
- 애플리케이션 또는 클라이언트를 의도한 대로 원본 또는 대상 컬렉션에 적절하게 가리켜 작업을 다시 시작합니다.
참고 항목
오프라인 컬렉션 복사 작업을 시작하기 전에 원본 컬렉션에 대한 작업을 중지하는 것이 좋습니다. 복사 작업을 시작한 후 원본 컬렉션에서 수행되는 항목 삭제 및 업데이트는 캡처되지 않을 수 있습니다. 복사 작업이 진행 중인 동안 원본 컬렉션에 대한 작업을 계속 수행하는 경우 대상 컬렉션에 중복되거나 누락된 데이터가 있을 수 있습니다.
컬렉션 복사는 어떻게 작동하나요?
- 플랫폼은 대상 Azure Cosmos DB 계정에 대한 서버 쪽 컴퓨팅 인스턴스를 할당합니다.
- 이러한 인스턴스는 계정 내에서 하나 이상의 컬렉션 복사 작업을 만들 때 할당됩니다.
- 복사 작업은 이러한 인스턴스에서 실행됩니다.
- 단일 작업은 언제든지 모든 인스턴스에서 실행됩니다.
- 인스턴스는 동일한 계정 내에서 실행되는 모든 복사 작업에서 공유됩니다.
- 오프라인 복사 작업은 변경 스트림을 사용하여 데이터를 복사하고 원본 컬렉션에서 대상 컬렉션으로 증분 변경 내용을 복제합니다.
- 플랫폼이 15분 이상 유휴 상태이면 인스턴스 할당을 해제할 수 있습니다.
오프라인 테이블 복사를 수행하여 한 테이블의 데이터를 동일한 Azure Cosmos DB for Apache Cassandra 계정 내의 다른 테이블에 복사할 수 있습니다.
테이블의 데이터 복사
- 사용하려는 설정(파티션 키, 처리량 세분성, 요청 단위 등)을 사용하여 대상 Azure Cosmos DB 테이블을 만듭니다.
- 애플리케이션 인스턴스 또는 해당 인스턴스에 연결하는 클라이언트를 일시 중지하여 원본 테이블에 대한 작업을 중지합니다.
- 복사 작업을 만듭니다.
- 복사 작업의 진행률을 모니터링하고 완료될 때까지 기다립니다.
- 애플리케이션 또는 클라이언트를 의도한 대로 원본 또는 대상 테이블을 적절하게 가리켜 작업을 다시 시작합니다.
참고 항목
오프라인 테이블 복사 작업을 시작하기 전에 원본 테이블에 대한 작업을 중지하는 것이 좋습니다. 복사 작업을 시작한 후 원본 테이블에서 수행되는 항목 삭제 및 업데이트는 캡처되지 않을 수 있습니다. 복사 작업이 진행 중인 동안 원본 테이블에서 작업을 계속 수행하는 경우 대상 테이블에 중복되거나 누락된 데이터가 있을 수 있습니다.
테이블 복사는 어떻게 작동하나요?
- 플랫폼은 대상 Azure Cosmos DB 계정에 대한 서버 쪽 컴퓨팅 인스턴스를 할당합니다.
- 이러한 인스턴스는 계정 내에서 하나 이상의 복사 작업을 만들 때 할당됩니다.
- 복사 작업은 이러한 인스턴스에서 실행됩니다.
- 단일 작업은 언제든지 모든 인스턴스에서 실행됩니다.
- 인스턴스는 동일한 계정 내에서 실행되는 모든 복사 작업에서 공유됩니다.
- 오프라인 복사 작업은 변경 피드를 사용하여 데이터를 복사하고 원본 테이블에서 대상 테이블로 증분 변경 내용을 복제합니다.
- 플랫폼이 15분 이상 유휴 상태이면 인스턴스 할당을 해제할 수 있습니다.
복사 작업의 속도에 영향을 주는 요소
컨테이너 복사 작업 진행률은 다음 요인에 따라 결정됩니다.
원본 컨테이너 또는 데이터베이스 처리량 설정.
대상 컨테이너 또는 데이터베이스 처리량 설정.
팁
대상 컨테이너 처리량을 원본 컨테이너 처리량의 2배 이상으로 설정합니다.
데이터 전송을 수행하기 위해 Azure Cosmos DB 계정에 할당되는 서버 쪽 컴퓨팅 인스턴스입니다.
Important
기본 SKU는 계정당 두 개의 4-vCPU 16GB 서버 쪽 인스턴스를 제공합니다.
제한 사항
미리 보기 자격 조건
컨테이너 복사 작업은 다음 기능을 사용하도록 설정된 계정에서는 작동하지 않습니다. 컨테이너 복사 작업을 실행하기 전에 다음 기능을 사용하지 않도록 설정합니다.
계정 구성
TTL(Time to Live) 설정은 대상 컨테이너에서 조정되지 않습니다. 따라서 원본 컨테이너에서 문서가 만료되지 않은 경우 대상 컨테이너에서 카운트다운을 새로 시작합니다.
FAQ
컨테이너 복사 작업에 대한 서비스 수준 계약이 있나요?
컨테이너 복사 작업은 현재 최선을 다해 지원됩니다. 작업이 완료되는 데 걸리는 시간에 대해서는 SLA(서비스 수준 계약)를 보장하지 않습니다.
계정 내에서 여러 컨테이너 복사 작업을 만들 수 있나요?
예, 동일한 계정 내에서 여러 작업을 만들 수 있습니다. 작업은 연속적으로 실행됩니다. 계정 내에서 만든 모든 작업을 나열하고 진행 상황을 모니터링할 수 있습니다.
Azure Cosmos DB 계정 내에서 전체 데이터베이스를 복사할 수 있나요?
데이터베이스의 각 컨테이너에 대한 작업을 만들어야 합니다.
여러 지역이 있는 Azure Cosmos DB 계정이 있습니다. 컨테이너 복사 작업은 어느 지역에서 실행되나요?
컨테이너 복사 작업은 쓰기 지역에서 실행됩니다. 다중 지역 쓰기로 구성된 계정에서 작업은 쓰기 지역 목록에 있는 지역 중 하나에서 실행됩니다.
계정의 쓰기 지역이 변경되면 컨테이너 복사 작업은 어떻게 되나요?
계정의 쓰기 지역은 드문 시나리오인 지역 중단 또는 수동 장애 조치(failover)로 인해 변경될 수 있습니다. 이 시나리오에서는 계정 내에서 만든 불완전한 컨테이너 복사 작업이 실패합니다. 이러한 실패한 작업은 다시 만들어야 합니다. 그러면 다시 만든 작업이 새(현재) 쓰기 지역에서 실행됩니다.
지원되는 지역
현재 컨테이너 복사는 다음 지역에서 지원됩니다.
아메리카 | 유럽 및 아프리카 | 아시아 태평양 |
---|---|---|
브라질 남부 | 프랑스 중부 | 오스트레일리아 중부 |
캐나다 중부 | 프랑스 남부 | 오스트레일리아 중부 2 |
캐나다 동부 | 독일 북부 | 오스트레일리아 동부 |
미국 중부 | 독일 중서부 | 인도 중부 |
미국 중부 EUAP | 북유럽 | 일본 동부 |
미국 동부 | 노르웨이 동부 | 한국 중부 |
미국 동부 2 | 노르웨이 서부 | 동남 아시아 |
미국 동부 2 EUAP | 스위스 북부 | 아랍에미리트 중부 |
미국 중북부 | 스위스 서부 | 인도 서부 |
미국 중남부 | 영국 남부 | 동아시아 |
미국 중서부 | 영국 서부 | 말레이시아 남부 |
미국 서부 | 서유럽 | 일본 서부 |
미국 서부 2 | 이스라엘 중부 | 오스트레일리아 남동부 |
지원되지 않음 | 남아프리카 공화국 북부 | 지원되지 않음 |
알려진 일반적인 문제
오류 - 소유자 리소스가 없습니다.
작업 만들기가 실패하고 소유자 리소스가 존재하지 않음(오류 코드 404) 오류가 표시되는 경우 대상 컨테이너가 아직 만들어지지 않았거나 작업을 만드는 데 사용된 컨테이너 이름이 실제 컨테이너 이름과 일치하지 않는 것입니다.
작업을 실행하기 전에 대상 컨테이너가 만들어졌는지 확인하고 작업의 컨테이너 이름이 실제 컨테이너 이름과 일치하는지 확인합니다.
"code": "404", "message": "Response status code does not indicate success: NotFound (404); Substatus: 1003; ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Reason: (Message: {\"Errors\":[\"Owner resource does not exist\"]
오류 - 요청이 승인되지 않았습니다.
요청이 실패하고 승인되지 않음(오류 코드 401) 오류가 표시되면 로컬 권한 부여가 비활성화될 수 있습니다.
컨테이너 복사 작업은 기본 키를 사용하여 인증합니다. 로컬 권한 부여를 사용하지 않도록 설정하면 작업 만들기가 실패합니다. 컨테이너 복사 작업이 작동하려면 로컬 권한 부여를 사용하도록 설정해야 합니다.
"code": "401", "message": " Response status code does not indicate success: Unauthorized (401); Substatus: 5202; ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx; Reason: Local Authorization is disabled. Use an AAD token to authorize all requests."
오류 - 작업에 대한 리소스를 가져오는 동안 오류가 발생했습니다.
이 오류는 내부 서버 문제로 인해 발생할 수 있습니다. 이 문제를 해결하려면 Azure Portal에서 새 지원 요청을 열어 Microsoft 지원에 문의하세요. 문제 유형에서 데이터 마이그레이션을 선택합니다. 문제 하위 유형에서 계정 내 컨테이너 복사를 선택합니다.
"code": "500" "message": "Error while getting resources for job, StatusCode: 500, SubStatusCode: 0, OperationId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx, ActivityId: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
다음 단계
- CLI 명령을 사용하여 Azure Cosmos DB 계정에서 컨테이너 복사 작업을 만들고, 모니터링하고, 관리하는 방법을 알아봅니다.