什么是备份Azure Blob存储内容的最佳方式

问题描述:

我知道Azure存储实体(blob,表和队列)具有内置弹性,意味着它们被复制到同一数据中心的3台不同服务器。最重要的是,它们也可能被复制到完全不同的数据中心,这些数据中心位于不同的地理区域。出于所有实际目的,在这种情况下丢失数据的可能性接近于零。什么是备份Azure Blob存储内容的最佳方式

但是,如果一个怠惰的开发人员(或受酒精影响的开发人员)通过Azure门户或Azure存储浏览器工具意外删除存储帐户,会发生什么情况?最糟糕的是,如果黑客获取您的账户并清除存储空间会怎么样?有没有一种方法来检索已删除的斑点的千兆字节或者是它?不知何故,我认为Azure基础架构必须提供一个优雅的解决方案,但我找不到任何文档。

我能想到的唯一的解决办法就是写我自己的进程(工作者角色),我的整个存储定期备份到不同的订阅/帐户,因此基本上加倍储存和交易的成本。 有什么想法?

问候,

阿尔奇尔

根据你要备份你的数据,有两种方法可供选择:

  1. 本地备份数据 - 如果要备份您的数据在您的基础设施中本地,您可以: a。使用Storage Client Library或使用REST API或 b编写自己的应用程序。使用第三方工具,如Cerebrata Azure Management Cmdlets(披露:我为Cerebrata工作)。备份云中的数据 - 最近,Windows Azure存储团队宣布了异步复制Blob功能,它基本上允许您将数据从一个存储帐户复制到另一个存储帐户,而无需在本地下载数据。这里的问题在于,您的目标存储帐户应该在2012年6月7日之后创建。您可以在Windows Azure博客上阅读有关此功能的更多信息:http://blogs.msdn.com/b/windowsazurestorage/archive/2012/06/12/introducing-asynchronous-cross-account-copy-blob.aspx

希望这会有所帮助。

+1

我遇到了这个确切的问题,并使用.net存储客户端进行备份。如果我今天再写一遍,我会更快地使用Asynchonous Copy Blob。 – knightpfhor 2012-07-19 20:23:06

+0

Cerebrata Azure Management Cmdlet看起来已经停产 – TWilly 2017-08-15 13:41:30

+0

[Gaurav Mantri](https://*.com/users/188096/gaurav-mantri)从第一个选项的链接不再起作用。 – SashaPinsk 2017-11-04 09:17:56

接受的答案是好的,但我花了几个小时,通过一切破译。

我已经把解决方案,我在现在生产使用。余暴露方法Backup()通过Web Api,然后通过每天(在夜里)的Azure WebJob调用。

请注意,我已经采取原始的源代码,并修改了它:

  • 它不是最新的,所以我改变了一些方法名
  • 添加重试复制操作的安全防范(失败后, 4次尝试对同一BLOB)
  • 记录添加一点点 - 你应该换出来用自己的。
  • 是否在两个存储帐户(复制容器& blob)之间进行备份
  • 添加了清除 - 它清除了不需要的旧容器(保留16天的数据)。你可以随时禁用它,因为空间很便宜。

源可以发现:https://github.com/ChrisEelmaa/*/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!")); 
    } 
} 

注:我想补充这个代码后的一部分,但浪费了6分钟试图让该代码在这个职位,但未能成功。格式化完全不起作用,并且完全打破了。

+0

元数据键名称不能再包含“ - ”。如果您将其重命名为“CreateAt”和“BackupOf”,则一切正常。 – PMerlet 2017-12-08 09:17:01

您可以制作博客容器的快照,然后下载快照以进行时间点备份。

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

快照是人提供在一个点采取 时间斑点的只读版本。快照对于备份blob非常有用。创建 快照后,您可以读取,复制或删除它,但无法对其进行修改+ blob的快照与其基本blob相同,只是 blob URI的DateTime值附加到blob URI来指示拍摄快照的时间点 。例如,如果页面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