2012-07-19 121 views
29

我知道Azure存儲實體(blob,表和隊列)具有內置彈性,意味着它們被複制到同一數據中心的3臺不同服務器。最重要的是,它們也可能被複制到完全不同的數據中心,這些數據中心位於不同的地理區域。出於所有實際目的,在這種情況下丟失數據的可能性接近於零。什麼是備份Azure Blob存儲內容的最佳方式

但是,如果一個怠惰的開發人員(或受酒精影響的開發人員)通過Azure門戶或Azure存儲瀏覽器工具意外刪除存儲帳戶,會發生什麼情況?最糟糕的是,如果黑客獲取您的賬戶並清除存儲空間會怎麼樣?有沒有一種方法來檢索已刪除的斑點的千兆字節或者是它?不知何故,我認爲Azure基礎架構必須提供一個優雅的解決方案,但我找不到任何文檔。

我能想到的唯一的解決辦法就是寫我自己的進程(工作者角色),我的整個存儲定期備份到不同的訂閱/帳戶,因此基本上加倍儲存和交易的成本。 有什麼想法?

問候,

阿爾奇爾

回答

19

根據你要備份你的數據,有兩種方法可供選擇:

  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://stackoverflow.com/users/188096/gaurav-mantri)從第一個選項的鏈接不再起作用。 – SashaPinsk 2017-11-04 09:17:56

4

接受的答案是好的,但我花了幾個小時,通過一切破譯。

我已經把解決方案,我在現在生產使用。餘暴露方法Backup()通過Web Api,然後通過每天(在夜裏)的Azure WebJob調用。

請注意,我已經採取原始的源代碼,並修改了它:

  • 它不是最新的,所以我改變了一些方法名
  • 添加重試複製操作的安全防範(失敗後, 4次嘗試對同一BLOB)
  • 記錄添加一點點 - 你應該換出來用自己的。
  • 是否在兩個存儲帳戶(複製容器& 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分鐘試圖讓該代碼在這個職位,但未能成功。格式化完全不起作用,並且完全打破了。

+0

元數據鍵名稱不能再包含「 - 」。如果您將其重命名爲「CreateAt」和「BackupOf」,則一切正常。 – PMerlet 2017-12-08 09:17:01

0

您可以製作博客容器的快照,然後下載快照以進行時間點備份。

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

相關問題