source

Azure Blob 스토리지 컨텐츠를 백업하는 가장 좋은 방법은 무엇입니까?

lovecheck 2023. 5. 27. 11:48
반응형

Azure Blob 스토리지 컨텐츠를 백업하는 가장 좋은 방법은 무엇입니까?

Azure 스토리지 엔티티(블럽, 테이블 및 큐)에는 복원력이 내장되어 있으며, 이는 동일한 데이터 센터에 있는 3개의 서로 다른 서버로 복제된다는 것을 의미합니다.또한 물리적으로 다른 지역에 위치한 다른 데이터 센터에 복제할 수도 있습니다.이 경우 데이터가 손실될 가능성은 실질적인 모든 목적에서 0에 가깝습니다.

그러나 엉성한 개발자(또는 술에 취한 개발자 :))가 실수로 Azure Portal 또는 Azure Storage Explorer 도구를 통해 저장 계정을 삭제하면 어떻게 됩니까?최악의 경우 해커가 사용자 계정을 확보하고 스토리지를 삭제하면 어떻게 됩니까?삭제된 블롭의 기가바이트를 검색할 수 있는 방법이 있습니까? 아니면 그것뿐입니까?어떻게든 여기에 Azure 인프라가 제공하는 우아한 솔루션이 있어야 한다고 생각하지만 문서를 찾을 수 없습니다.

제가 생각할 수 있는 유일한 솔루션은 전체 스토리지를 정기적으로 다른 구독/계정에 백업하는 자체 프로세스(작업자 역할)를 작성하여 스토리지 및 트랜잭션 비용을 근본적으로 두 배로 늘리는 것입니다.무슨 생각 있어요?

안부 전해요,

아르킬

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

  1. 로컬로 데이터 백업 - 인프라에서 데이터를 로컬로 백업하려는 경우 다음과 같이 할 수 있습니다.스토리지 클라이언트 라이브러리를 사용하거나 REST API 또는 b를 사용하여 직접 애플리케이션을 작성합니다.Cerebrata Azure Management Cmdlet과 같은 타사 툴 사용(공개:저는 Cerebrata)에서 일합니다.

  2. 클라우드의 데이터 백업 - 최근에 Windows Azure Storage 팀에서 비동기 Copy Blob 기능을 발표했습니다. 이 기능을 사용하면 로컬로 데이터를 다운로드하지 않고도 한 스토리지 계정에서 다른 스토리지 계정으로 데이터를 복사할 수 있습니다.여기서 중요한 점은 2012년 6월 7일 이후에 타깃 스토리지 계정을 생성해야 한다는 것입니다.이 기능에 대한 자세한 내용은 Windows Azure Blog: http://blogs.msdn.com/b/windowsazurestorage/archive/2012/06/12/introducing-asynchronous-cross-account-copy-blob.aspx 에서 확인할 수 있습니다.

이게 도움이 되길 바랍니다.

받아들여진 답은 괜찮지만, 저는 모든 것을 해독하는 데 몇 시간이 걸렸습니다.

저는 현재 생산에 사용하고 있는 솔루션을 정리했습니다. 방법을 합니다.Backup()를 통하여Web Api그리고 나서 그것은 an에 의해 불려집니다.Azure WebJob매일 (심야에)

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

  • 최신 버전이 아니어서 메서드 이름을 몇 개 변경했습니다.
  • 재시도 복사 작업 안전 장치 추가(동일한 블롭에 대해 4번의 시도 후 실행)
  • 약간의 로깅이 추가되었습니다. 당신은 그것을 당신의 것과 바꿔야 합니다.
  • 두 개의 스토리지 계정(컨테이너 및 블롭 통합) 간에 백업을 수행합니까?
  • 제거 추가 - 필요 없는 오래된 컨테이너를 제거합니다(16일 분량의 데이터 포함).공간이 저렴하기 때문에 항상 이것을 비활성화할 수 있습니다.

출처는 https://github.com/ChrisEelmaa/StackOverflow/blob/master/AzureStorageAccountBackup.cs 에서 확인할 수 있습니다.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분이 걸렸지만 실패했습니다.포맷이 전혀 작동하지 않았고, 완전히 깨졌습니다.

저는 Azure Data Factory를 사용하여 Azure 스토리지를 효과적으로 백업했습니다.사용하기 쉽고, 비용 효율적이며, 매우 효과적입니다.

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

파이프라인을 병합하거나 덮어쓸 수 있으며 사용자 지정 규칙/와일드카드를 설정할 수 있습니다.

파이프라인을 설정했으면 예약 트리거를 설정해야 합니다.이렇게 하면 필요에 따라 주기적으로 백업이 시작됩니다.

저는 그것을 몇 달 동안 사용해 왔고 완벽합니다.코드, VMS, 사용자 지정 PowerShell 스크립트 또는 타사 소프트웨어가 없습니다.퓨어 애저 용액.

저는 정확히 같은 요구 사항을 가지고 있었습니다. 수백만 명의 고객이 있고 당신이 옳기 때문에 Azure의 블롭을 백업하는 것입니다. 완전한 액세스 권한을 가진 엉성한 개발자는 전체 시스템을 손상시킬 수 있습니다.

그래서 저는 MIT 라이선스 하에 github에 무료 오픈 소스인 "Blob To Local Backup" 애플리케이션 전체를 작성했습니다. https://github.com/smartinmedia/BlobToLocalBackup

많은 문제를 해결합니다. 예를 들어, a) 이 애플리케이션에 대한 읽기 액세스 권한만 부여하여 애플리케이션이 Azure의 데이터를 파괴할 수 없도록 할 수 있습니다. b) 허술한 개발자나 해커가 Azure 계정과 동일한 액세스 권한을 가지고 있지 않은 서버에 대한 백업. c) 소프트웨어는 버전 관리 기능을 제공하므로 e로부터 사용자 자신을 보호할 수 있습니다.랜섬/암호화 공격. d) 데이터베이스 대신 직렬화 방법을 포함했기 때문에 Azure에 수백만 개의 파일을 저장할 수 있고 동기화를 유지할 수 있습니다(우리는 Azure에 2천만 개의 파일이 있습니다).

작동 방식은 다음과 같습니다(자세한 내용은 github의 README를 참조하십시오).

  1. 메인 폴더에 appsettings.json 파일을 설정합니다.전체 액세스에 대한 로그인 자격 증명을 여기에 제공하거나 스토리지 계정 수준에서 보다 세부적으로 수행할 수 있습니다.
    {
     "App": {

        "ConsoleWidth": 150,
        "ConsoleHeight":  42,

        "LoginCredentials": {
            "ClientId": "2ab11a63-2e93-2ea3-abba-aa33714a36aa",
            "ClientSecret": "ABCe3dabb7247aDUALIPAa-anc.aacx.4",
            "TenantId": "d666aacc-1234-1234-aaaa-1234abcdef38"
        },
        "DataBase": {
          "PathToDatabases": "D:/temp/azurebackup"
        },
        "General": {
          "PathToLogFiles": "D:/temp/azurebackup"
        }
      }
    }

  1. 다음과 같이 JSON 파일로 작업 설정(여러 옵션을 추가했습니다)
    {
      "Job": {
        "Name": "Job1",
        "DestinationFolder": "D:/temp/azurebackup",
        "ResumeOnRestartedJob": true,
        "NumberOfRetries": 0, 
        "NumberCopyThreads": 1,
        "KeepNumberVersions": 5,
        "DaysToKeepVersion": 0, 
        "FilenameContains": "", 
        "FilenameWithout": "", 
        "ReplaceInvalidTargetFilenameChars": false,
        "TotalDownloadSpeedMbPerSecond": 0.5,

        "StorageAccounts": [
          {

            "Name": "abc",
            "SasConnectionString": "BlobEndpoint=https://abc.blob.core.windows.net/;QueueEndpoint=https://abc.queue.core.windows.net/;FileEndpoint=https://abc.file.core.windows.net/;TableEndpoint=https://abc.table.core.windows.net/;SharedAccessSignature=sv=2019-12-12&ss=bfqt&srt=sco&sp=rl&se=2020-12-20T04:37:08Z&st=2020-12-19T20:37:08Z&spr=https&sig=abce3e399jdkjs30fjsdlkD",
            "FilenameContains": "",
            "FilenameWithout": "",
            "Containers": [
              {
                "Name": "test",
                "FilenameContains": "",
                "FilenameWithout": "",
                "Blobs": [
                  {
                    "Filename": "2007 EasyRadiology.pdf",
                    "TargetFilename": "projects/radiology/Brochure3.pdf"
                  }
                ]
              },
              {
                "Name": "test2"
              }
            ]

          },
          {
            "Name": "martintest3",
            "SasConnectionString": "",
            "Containers": [] 
          }
        ]
      }
      
    }
  1. 다음을 사용하여 응용 프로그램을 실행합니다.
    blobtolocal job1.json

타사 솔루션을 참조하지 않아도 다음 단계를 사용하여 Azure에 내장된 기능을 지금 사용하면 블로그를 보호하는 데 도움이 될 수 있습니다.

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

  2. 읽기 액세스 지리적 스토리지 두 번째 접근 방식은 RA-RGA에 대한 지리적 인증을 활성화하는 것입니다. 따라서 첫 번째 데이터 센터가 다운된 경우 다른 지역의 보조 복제본에서 언제든지 읽을 수 있습니다. 자세한 내용은 https://learn.microsoft.com/en-us/azure/storage/common/storage-redundancy-grs 에서 확인할 수 있습니다.

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

https://learn.microsoft.com/en-us/azure/storage/storage-blob-snapshots

스냅샷은 특정 시점에 촬영된 블롭의 읽기 전용 버전입니다.스냅샷은 블롭을 백업하는 데 유용합니다.스냅샷을 생성한 후에는 읽기, 복사 또는 삭제할 수 있지만 수정할 수는 없습니다.+ BLOB의 스냅샷은 기본 BLOB와 동일합니다. 단, BLOBURI에는 스냅샷이 생성된 시간을 나타내는 DateTime 값이 추가됩니다.예를 들어 페이지 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 과 유사합니다.

언급URL : https://stackoverflow.com/questions/11561844/what-is-the-best-way-to-backup-azure-blob-storage-contents

반응형