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