Каков наилучший способ резервного копирования содержимого хранилища Blob-объектов Azure

Я знаю, что объекты хранилища Azure (Blob, таблицы и очереди) имеют встроенную отказоустойчивость, что означает, что они реплицируются на 3 разных сервера в одном центре данных. Кроме того, они также могут быть реплицированы в другой центр обработки данных, который физически расположен в другом географическом регионе. Вероятность потери данных в этом случае близка к нулю для всех практических целей.

однако, что произойдет, если неаккуратный разработчик (или тот, под влияние алкоголя :)) случайно удаляет учетную запись хранения через портал Azure или средство Azure Storage Explorer? Что еще хуже, если хакер завладеет вашей учетной записью и очистит хранилище? Есть ли способ получить гигабайты удаленных сгустков или это все? Почему-то я думаю, что здесь должно быть элегантное решение, которое предоставляет инфраструктура Azure, но я не могу найти никакой документации.

единственное решение, которое я могу придумать-это написать свой собственный процесс (работник роль), которая периодически создает резервную копию всего моего хранилища для другой подписки / учетной записи, что существенно удваивает стоимость хранения и транзакций. Есть мысли?

с уважением,

Арчил

3 ответов


в зависимости от того, где вы хотите сделать резервную копию ваших данных, есть два варианта:

  1. резервное копирование данных локально - если вы хотите сделать резервную копию данных локально в вашей инфраструктуре, вы можете: a. Напишите собственное приложение, используя клиентскую библиотеку хранилища или используя REST API или b. Используйте сторонние инструменты, такие как Командлеты Управления Cerebrata Azure (раскрытие: я работаю на Cerebrata).

  2. резервное копирование данных в облаке - Недавно команда хранения Windows Azure объявила о функции асинхронного копирования Blob-объектов, которая позволит копировать данные из одной учетной записи хранения в другую без загрузки данных локально. Загвоздка здесь заключается в том, что ваша целевая учетная запись хранения должна быть создана после 7 июня 2012 года. Подробнее об этой функции можно прочитать в блоге Windows Azure: http://blogs.msdn.com/b/windowsazurestorage/archive/2012/06/12/introducing-asynchronous-cross-account-copy-blob.aspx.

надеюсь, что это помогает.


принятый ответ в порядке, но мне потребовалось несколько часов, чтобы расшифровать все.

Я создал решение, которое я использую сейчас в производстве. Я разоблачаю метод Backup() через Web Api, который затем позвонил Azure WebJob каждый день (в полночь).

обратите внимание, что я взял исходный код и изменить его:

  • это было не в курсе, поэтому я изменил несколько имен методов
  • добавлена повторная попытка копирования операции safeguard (сбой после 4 попыток для того же blob)
  • добавлено немного ведения журнала - вы должны поменять его с вашим собственным.
  • выполняет резервное копирование между двумя учетными записями хранения (репликация контейнеров и blobs)
  • добавлена очистка-он избавляется от старых контейнеров, которые не нужны (сохраняет 16 дней данных). вы всегда можете отключить это, так как пространство дешево.

источник можно найти от: https://github.com/ChrisEelmaa/StackOverflow/blob/master/AzureStorageAccountBackup.cs

и вот как я использую его в контроллере (обратите внимание, что ваш контроллер должен вызываться только azure webjob - вы можете проверить учетные данные в заголовках):

[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 минут, пытаясь получить этот код в этом сообщении, но не удалось. форматирование не работало вообще, и оно полностью сломалось.


вы можете сделать снимок контейнера блога, а затем загрузить снимок для резервного копирования момента времени.

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

моментальный снимок-это версия blob только для чтения, сделанная в время. Снимки полезны для резервного копирования blobs. После создания снимок можно прочитать, скопировать или удалить, но изменить его нельзя.+ Снимок blob-объекта идентичен его базовый объект, за исключением того, что Ури объект datetime значение добавляется к URI клякса указать время, когда был сделан снимок. Например, если URI blob-объекта страницы это http://storagesample.core.blob.windows.net/mydrives/myvhd, URI моментального снимка похож на http://storagesample.core.blob.windows.net/mydrives/myvhd?snapshot=2011-03-09T01:42:34.9360000Z.