it-swarm.dev

Azure Blob Storage 콘텐츠를 백업하는 가장 좋은 방법은 무엇입니까

Azure 저장소 엔터티 (blob, 테이블 및 큐)에는 기본 복구 기능이 있으므로 동일한 데이터 센터에서 3 개의 서로 다른 서버로 복제됩니다. 또한 물리적으로 다른 지리적 위치에있는 다른 데이터 센터로 복제 될 수도 있습니다. 이 경우 데이터가 손실 될 가능성은 모든 실제적인 목적에 거의 0에 가깝습니다.

그러나 조잡한 개발자 (또는 알코올의 영향을받는 개발자)가 실수로 Azure Portal 또는 Azure Storage Explorer 도구를 통해 저장소 계정을 삭제하면 어떻게됩니까? 최악의 경우 해커가 계정을 보유하고 저장 공간을 비우면 어떻게됩니까? 기가 바이트의 삭제 된 얼룩을 검색하는 방법이 있습니까? 어떻게 든 Azure 인프라에서 제공하는 우아한 솔루션이 있어야한다고 생각하지만 문서를 찾을 수 없습니다.

내가 생각할 수있는 유일한 해결책은 전체 스토리지를 다른 가입/계정에 정기적으로 백업하는 자체 프로세스 (작업자 역할)를 작성하여 스토리지 및 트랜잭션 비용을 두 배로 늘리는 것입니다. 이견있는 사람?

문안 인사,

아킬

39
Archil Kublashvili

데이터를 백업하려는 위치에 따라 두 가지 옵션을 사용할 수 있습니다.

  1. 로컬로 데이터 백업-인프라에서 로컬로 데이터를 백업하려는 경우 다음을 수행 할 수 있습니다. Storage Client Library를 사용하거나 REST API 또는 b. Cerebrata Azure Management Cmdlets (공개 : Cerebrata에서 일합니다)와 같은 타사 도구를 사용하여 자체 응용 프로그램을 작성하십시오.

  2. 클라우드에서 데이터 백업-최근에 Windows Azure 저장소 팀은 데이터를 로컬로 다운로드하지 않고 하나의 저장소 계정에서 다른 저장소 계정으로 데이터를 복사 할 수있는 비동기 복사 Blob 기능을 발표했습니다. 여기서 주목해야 할 것은 2012 년 6 월 7 일 이후에 대상 저장소 계정을 만들어야한다는 것입니다. Windows Azure 블로그에서이 기능에 대한 자세한 내용을 볼 수 있습니다. http://blogs.msdn.com/b/windowsazurestorage/archive/2012 /06/12/introducing-asynchronous-cross-account-copy-blob.aspx .

도움이 되었기를 바랍니다.

24
Gaurav Mantri

대답은 괜찮지 만 모든 것을 해독하는 데 몇 시간이 걸렸습니다.

현재 프로덕션에서 사용하는 솔루션을 모았습니다. Backup() ~ Web Api 그런 다음 Azure WebJob 매일 (자정).

원본 소스 코드를 가져 와서 수정했습니다.

  • 최신이 아니므로 메소드 이름을 거의 변경하지 않았습니다.
  • 재시도 복사 작업 보호 기능 추가 (같은 블롭에 대해 4 번 시도한 후에 실패)
  • 약간의 로깅을 추가했습니다-자신의 것으로 바꿔야합니다.
  • 두 저장소 계정 사이에서 백업을 수행합니다 (컨테이너 및 Blob 복제).
  • 추가 제거-필요하지 않은 오래된 컨테이너를 제거합니다 (16 일 분량의 데이터 유지). 공간이 저렴하므로 언제든지이 기능을 비활성화 할 수 있습니다.

소스는 다음에서 찾을 수 있습니다. https://github.com/ChrisEelmaa/StackOverflow/blob/master/AzureStorageAccountBackup.cs

그리고 이것은 컨트롤러에서 사용하는 방법입니다 (Azure 웹 작업에서만 컨트롤러를 호출 할 수 있어야합니다-헤더에서 자격 증명을 확인할 수 있음).

[Route("backup")]
[HttpPost]
public async Task<IHttpActionResult> Backup()
{
    try
    {
        await _blobService.Backup();
        return Ok();
    }
    catch (Exception e)
    {
        _loggerService.Error("Failed to backup blobs " + e);
        return InternalServerError(new Exception("Failed to back up blobs!"));
    }
}

참고 :이 코드를 게시물의 일부로 추가하고 싶었지만 6 분 동안이 게시물에 해당 코드를 가져 오는 데 낭비했지만 실패했습니다. 서식이 전혀 작동하지 않아 완전히 손상되었습니다.

4
Erti-Chris Eelmaa

Azure Data Factory를 사용하여 Azure 저장소를 큰 효과로 백업했습니다. 정말 사용하기 쉽고 비용 효율적이며 잘 작동합니다.

데이터 팩토리 (v2)를 만들고 데이터 소스 (현재 Azure 테이블, Azure Blob 및 Azure 파일을 지원)에 대한 데이터 연결을 설정 한 다음 데이터 복사 파이프 라인을 설정하기 만하면됩니다.

파이프 라인은 병합, 덮어 쓰기 등을 수행 할 수 있으며 사용자 지정 규칙/와일드 카드를 설정할 수 있습니다.

파이프 라인을 설정 한 후에는 일정 트리거를 설정해야합니다. 이것은 필요에 따라 간격을두고 백업을 시작합니다.

나는 그것을 몇 달 동안 사용해 왔으며 완벽합니다. 코드, VMS, 사용자 지정 PowerShell 스크립트 또는 타사 소프트웨어가 없습니다. 순수한 Azure 솔루션.

2
SimonGoldstone

블로그 컨테이너의 스냅 샷을 작성한 다음 특정 시점 백업을위한 스냅 샷을 다운로드 할 수 있습니다.

https://docs.Microsoft.com/en-us/Azure/storage/storage-blob-snapshots

스냅 샷은 특정 시점에 작성된 읽기 전용 버전의 Blob입니다. 스냅 샷은 얼룩을 백업하는 데 유용합니다. 스냅 샷을 생성 한 후에는 읽고 복사하거나 삭제할 수 있지만 수정할 수는 없습니다. + Blob의 스냅 샷은 Blob URI에 DateTime 값이 Blob URI에 추가 된 것을 제외하고는 기본 Blob과 동일합니다. 스냅 샷이 생성 된 시간을 나타냅니다. 예를 들어, 페이지 Blob URI가 http://storagesample.core.blob.windows.net/mydrives/myvhd 인 경우 스냅 샷 URI는 http : // storagesample과 유사합니다. core.blob.windows.net/mydrives/myvhd?snapshot=2011-03-09T01:42:34.9360000Z .

1
TWilly

타사 솔루션을 언급하지 않고 아래 단계를 사용하여 Azure의 기본 제공 기능을 사용하면 Blob 보안에 도움이 될 수 있습니다.

  1. Azure Storage Blobs 용 소프트 삭제 더 나은 단계는 먼저 GA에있는 소프트 삭제를 활성화하는 것입니다. https://Azure.Microsoft .com/en-us/blog/soft-delete-for-Azure-storage-blobs-ga

  2. 읽기 액세스 지리 중복 스토리지 두 번째 접근 방식은 RA-RGA에 대해 지리 복제를 활성화하는 것이므로 첫 번째 데이터 센터가 다운 된 경우 언제든지 읽을 수 있습니다 다른 지역의 보조 복제본에 대한 자세한 내용은 여기를 참조하십시오. https://docs.Microsoft.com/en-us/Azure/storage/common/storage-redundancy-grs

1
Anass Kartit