Подтвердить что ты не робот

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

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

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

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

Привет,

Арчил

4b9b3361

Ответ 1

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

  • Резервное копирование данных локально. Если вы хотите сделать резервную копию своих данных локально в своей инфраструктуре, вы можете: а. Создайте собственное приложение, используя либо библиотеку клиентов хранилища, либо используя REST API или б. Используйте сторонние инструменты, такие как Командлеты управления Cerebrata Azure (раскрытие: я работаю для Cerebrata).

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

Надеюсь, что это поможет.

Ответ 2

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

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

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

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

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

и так я использую его в контроллере (обратите внимание, что ваш контроллер должен быть только вызываемым лазурным 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!"));
    }
}

note: Я хотел добавить этот код как часть сообщения, но потратил 6 минут, пытаясь получить этот код в этот пост, но не смог. форматирование вообще не работало, и оно полностью сломалось.

Ответ 3

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

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

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