2012-07-19 12 views
29

मुझे पता है कि Azure संग्रहण इकाइयों (ब्लब्स, टेबल और कतार) में अंतर्निहित लचीलापन है, जिसका अर्थ है कि उन्हें उसी डेटासेंटर में 3 अलग-अलग सर्वरों में दोहराया जाता है। इसके शीर्ष पर उन्हें एक अलग डेटासेंटर पर भी दोहराया जा सकता है जो शारीरिक रूप से एक अलग भौगोलिक क्षेत्र में स्थित है। इस मामले में अपना डेटा खोने का मौका सभी व्यावहारिक उद्देश्यों के लिए शून्य के करीब है।बैकअप Azure Blob संग्रहण सामग्री

हालांकि, क्या होता है यदि एक मैला डेवलपर (या अल्कोहल के प्रभाव में से एक :)) गलती से एज़ूर पोर्टल या एज़ूर स्टोरेज एक्सप्लोरर टूल के माध्यम से स्टोरेज खाते को हटा देता है? सबसे खराब, क्या होगा यदि एक हैकर आपके खाते को पकड़ लेता है और भंडारण को साफ़ करता है? क्या हटाए गए ब्लब्स के गीगाबाइट को पुनः प्राप्त करने का कोई तरीका है या यह है? किसी भी तरह से मुझे लगता है कि एक सुरुचिपूर्ण समाधान होना चाहिए कि Azure बुनियादी ढांचा यहां प्रदान करता है लेकिन मुझे कोई दस्तावेज नहीं मिल रहा है।

एकमात्र समाधान जो मैं सोच सकता हूं वह है अपनी खुद की प्रक्रिया (कार्यकर्ता भूमिका) लिखना जो समय-समय पर मेरे पूरे भंडारण को एक अलग सदस्यता/खाते में बैक अप लेता है, इस प्रकार अनिवार्य रूप से भंडारण और लेनदेन की लागत को दोगुना कर देता है। कोई विचार?

सादर,

Archil

उत्तर

19

जहां बैकअप के लिए अपने डेटा चाहते हैं पर निर्भर करता है, वहाँ दो विकल्प उपलब्ध हैं:

  1. स्थानीय रूप से डेटा का बैक अप लिया - आप बैकअप अपने डेटा करना चाहते हैं स्थानीय रूप से आपके बुनियादी ढांचे में, आप यह कर सकते हैं: ए। स्टोरेज क्लाइंट लाइब्रेरी या आरईएसटी एपीआई या बी का उपयोग करके अपना स्वयं का एप्लिकेशन लिखें। Cerebrata Azure Management Cmdlets (प्रकटीकरण: मैं सेरेब्रेटा के लिए काम करता हूं) जैसे तृतीय पक्ष टूल का उपयोग करें।

  2. क्लाउड में डेटा का बैक अप लिया - हाल ही में, विंडोज Azure संग्रहण टीम जो आप स्थानीय रूप से डेटा डाउनलोड करने के बिना किसी अन्य संग्रहण खाते में एक भंडारण खाते से डेटा कॉपी करने की अनुमति अनिवार्य होगा अतुल्यकालिक कॉपी ब्लॉब कार्यक्षमता की घोषणा की। यहां पकड़ यह है कि आपका लक्ष्य संग्रहण खाता 7 जून 2012 के बाद बनाया जाना चाहिए। आप Windows Azure ब्लॉग पर इस कार्यक्षमता के बारे में अधिक पढ़ सकते हैं: http://blogs.msdn.com/b/windowsazurestorage/archive/2012/06/12/introducing-asynchronous-cross-account-copy-blob.aspx

उम्मीद है कि इससे मदद मिलती है।

+1

मुझे इस सटीक समस्या का सामना करना पड़ा है और .NET स्टोरेज क्लाइंट के साथ बैक अप लिया गया है। अगर मैं इसे फिर से लिख रहा था तो मैं असिंकोनस कॉपी ब्लॉब का उपयोग करता हूं, जो बहुत तेज़ है। – knightpfhor

+0

सेरेब्रेटा एज़ूर प्रबंधन सीएमडीलेट्स को – TWilly

+0

बंद कर दिया गया है [गौरव मंत्री] (https://stackoverflow.com/users/188096/gaurav-mantri) पहले विकल्प से लिंक अब और काम नहीं करता है। – SashaPinsk

4

स्वीकृत उत्तर ठीक है, लेकिन मुझे सब कुछ के माध्यम से समझने में कुछ घंटे लगे।

मैंने एक साथ समाधान बनाया है जिसे मैं अब उत्पादन में उपयोग करता हूं। मैं Backup()Web Api के माध्यम से विधि का खुलासा करता हूं जिसे तब Azure WebJob द्वारा हर दिन (आधी रात को) कहा जाता है।

ध्यान दें कि मैं मूल स्रोत कोड कर लिया है, और यह संशोधित:

  • यह किया गया था के बाद विफल रहता है नहीं अद्यतित तो मैं कुछ विधि नाम बदल
  • जोड़ा फिर से प्रयास करें प्रतिलिपि आपरेशन सुरक्षित गार्ड (4 उसी ब्लॉब के लिए प्रयास करता है)
  • लॉगिंग का थोड़ा सा जोड़ा - आपको इसे स्वयं से स्वैप करना चाहिए।
  • दो भंडारण खातों (कंटेनर नकल & धब्बे)
  • शुद्धिकरण जोड़ा बीच बैकअप करता है - यह पुराने कंटेनरों कि आवश्यक नहीं हैं छुटकारा हो जाता है (डेटा के 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

0

आप ब्लॉग कंटेनर का एक स्नैपशॉट बना सकते हैं और फिर समय बैकअप में एक बिंदु के लिए स्नैपशॉट डाउनलोड कर सकते हैं।

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

एक स्नैपशॉट एक ब्लॉब कि समय में एक बिंदु पर साथ ले जाती है की केवल पढ़ने के लिए संस्करण है। ब्लैब्स का बैक अप लेने के लिए स्नैपशॉट उपयोगी हैं। स्नैपशॉट बनाने के बाद, आप इसे पढ़ सकते हैं, प्रतिलिपि बना सकते हैं या हटा सकते हैं, लेकिन आप इसे संशोधित नहीं कर सकते हैं। + ब्लॉब का एक स्नैपशॉट इसके बेस ब्लॉब के समान है, सिवाय इसके कि ब्लॉब यूआरआई में डेटटाइम मान शामिल है ब्लॉब यूआरआई इंगित करने के लिए जिस पर स्नैपशॉट लिया गया था। उदाहरण के लिए, यदि कोई पेज ब्लॉब यूआरआई http://storagesample.core.blob.windows.net/mydrives/myvhd है, तो स्नैपशॉट यूआरआई http://storagesample.core.blob.windows.net/mydrives/myvhd?snapshot=2011-03-09T01:42:34.9360000Z के समान है।

संबंधित मुद्दे