我知道,Azure存储实体(斑点,表和队列)有一个内置的弹性,这意味着它们将被复制到3个不同的服务器在同一个数据中心。 最重要的是它们也可以被复制到其他数据中心完全被物理上位于不同的地理区域。 在这种情况下丢失数据的可能性接近于零所有的实际目的。
然而,会发生什么,如果一个草率的开发人员(或酒精:)影响下一个)意外地通过Azure的门户网站或Azure存储资源管理器工具将删除存储帐户? 最糟糕的是,如果有什么黑客得到握住你的帐户,并清除存储? 有没有办法找回删除的斑点的千兆字节或者是它? 不知怎的,我觉得必须有一个优雅的解决方案,Azure基础设施开发提供了这里,但我无法找到任何文件。
我能想到的唯一的解决办法就是写我自己的进程(工作者角色),我的整个存储定期备份到不同的订阅/帐户,因此基本上加倍储存和交易的成本。 有什么想法吗?
问候,
阿尔奇尔
该接受的答案是好的,但我花了几个小时,通过一切破译。
我已经把解决方案,我在现在生产使用。 我揭露方法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!"));
}
}
注意:我想补充这个代码后的一部分,但浪费了6分钟试图让代码到这个职位,但失败了。 格式化并没有在所有的工作,它彻底打破了。
你可以做一个博客容器的快照,然后下载快照用于备份的时间点。
https://docs.microsoft.com/en-us/azure/storage/storage-blob-snapshots
快照是人提供在一个点及时采取一个blob的只读版本。 快照是备份斑点有用。 创建快照后,就可以阅读,复制或删除它,但你不能修改它。+一个blob的快照是一致的基础BLOB,除了BLOB URI拥有追加到BLOB URI为DateTime值表示在该快照的时间。 例如,如果一个页面斑点URI是http://storagesample.core.blob.windows.net/mydrives/myvhd ,快照URI类似于http://storagesample.core.blob.windows.net/mydrives/myvhd ?快照= 2011-03-09T01:42:34.9360000Z 。
没有提及的第三方解决方案,可以实现,使用内置的功能,在Azure中现在用下面的步骤可以帮助保护您的斑点。
软删除Azure存储斑点更好的步骤是先使软删除这是目前GA: https://azure.microsoft.com/en-us/blog/soft-delete-for-azure-storage-blobs-ga
读取访问地理冗余存储第二种方法是启用RA-RGA地域复制,因此,如果第一个数据中心中断时,可以随时从另一区域中的辅助副本读,你可以在这里找到更多的信息: HTTPS: //docs.microsoft.com/en-us/azure/storage/common/storage-redundancy-grs
我已经使用Azure的数据工厂来备份Azure存储有很大的影响。 它真的好用,性价比高,工作得很好。
只需创建一个数据工厂(V2),您的数据源建立数据连接(它目前支持Azure的表,Azure的Blob和Azure的文件),然后建立数据复制管道。
该管道可以合并,改写等,您可以设置自定义规则/通配符。
一旦你已经设置了管道,则应设置一个时间表触发。 这将揭开序幕,在备份的时间间隔,以满足您的需求。
我已经使用了几个月,这是完美的。 无码,没有VMS,没有自定义PowerShell脚本或第三方软件。 纯Azure的解决方案。