Каков наилучший способ резервного копирования содержимого хранилища Azure Blob
Я знаю, что объекты Azure Storage (капли, таблицы и очереди) имеют встроенную отказоустойчивость, что означает, что они реплицируются на 3 разных сервера в одном и том же центре данных. Кроме того, они могут также быть воспроизведены в другой центр данных, который физически находится в другом географическом регионе. Вероятность потери ваших данных в этом случае близка к нулю для всех практических целей.
Однако, что произойдет, если неаккуратный разработчик (или тот, который под воздействием алкоголя:)) случайно удалит учетную запись хранилища через Azure Portal или инструмент Azure Storage Explorer? Хуже того, что, если хакер захватит ваш аккаунт и очистит хранилище? Есть ли способ получить гигабайты удаленных блобов или что это? Как-то я думаю, что должно быть элегантное решение, которое предоставляет инфраструктура Azure, но я не могу найти никакой документации.
Единственное решение, о котором я могу думать, это написать собственный процесс (роль рабочего), который периодически резервирует все мое хранилище на другую подписку/учетную запись, что существенно удваивает стоимость хранения и транзакций.
Любые мысли?
Привет,
Арчил
Ответы
Ответ 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.