wake-up-neo.com

Was ist der beste Weg, um Inhalte von Azure Blob Storage zu sichern?

Ich weiß, dass die Azure Storage-Entitäten (Blobs, Tabellen und Warteschlangen) eine integrierte Ausfallsicherheit aufweisen. Das bedeutet, dass sie auf 3 verschiedene Server im selben Datencenter repliziert werden. Darüber hinaus können sie auch in einem anderen Datencenter repliziert werden, das sich physisch in einer anderen geografischen Region befindet. Die Wahrscheinlichkeit, dass Ihre Daten in diesem Fall verloren gehen, ist aus praktischen Gründen nahe null.

Was passiert jedoch, wenn ein schlampiger Entwickler (oder der unter Alkoholeinfluss :)) versehentlich das Speicherkonto über das Azure Portal oder das Azure Storage Explorer-Tool löscht? Am schlimmsten ist, was passiert, wenn ein Hacker Ihr Konto ergreift und den Speicher löscht? Gibt es eine Möglichkeit, die Gigabytes gelöschter Blobs abzurufen, oder ist es das? Ich denke, irgendwie muss die Azure-Infrastruktur hier eine elegante Lösung bieten, aber ich kann keine Dokumentation finden.

Die einzige Lösung, die ich mir vorstellen kann, ist, meinen eigenen Prozess (Arbeiterrolle) zu schreiben, der meinen gesamten Speicher regelmäßig auf einem anderen Abonnement/Konto sichert und somit die Kosten für Speicher und Transaktionen im Wesentlichen verdoppelt.

Grüße,

Archil

37

Je nachdem, wo Sie Ihre Daten sichern möchten, stehen zwei Optionen zur Verfügung:

  1. Daten lokal sichern - Wenn Sie Ihre Daten lokal in Ihrer Infrastruktur sichern möchten, können Sie Folgendes tun: A. Schreiben Sie Ihre eigene Anwendung, indem Sie entweder die Storage Client Library oder die API REST oder .__ verwenden. B. Verwenden Sie Tools von Drittanbietern wie Cerebrata Azure Management-Cmdlets (Offenlegung: Ich arbeite für Cerebrata). 

  2. Sichern von Daten in der Cloud - Vor kurzem hat das Windows Azure Storage-Team die Funktion Asynchronous Copy Blob angekündigt, mit der Sie im Wesentlichen Daten von einem Speicherkonto auf ein anderes Speicherkonto kopieren können, ohne die Daten lokal herunterladen zu müssen. Der Haken dabei ist, dass Ihr Zielspeicherkonto nach dem 7. Juni 2012 erstellt werden sollte. Weitere Informationen zu dieser Funktion finden Sie im Windows Azure-Blog: http://blogs.msdn.com/b/windowsazurestorage/archive/2012/06 /12/Einführung-asynchroner- Cross-Account-copy-blob.aspx .

Hoffe das hilft.

24
Gaurav Mantri

Die akzeptierte Antwort ist in Ordnung, aber ich habe ein paar Stunden gebraucht, um alles zu entschlüsseln.

Ich habe eine Lösung zusammengestellt, die ich jetzt in der Produktion verwende. Ich mache die Methode Backup() durch Web Api verfügbar, die dann jeden Tag (um Mitternacht) von einem Azure WebJob aufgerufen wird.

Beachten Sie, dass ich den ursprünglichen Quellcode genommen und geändert habe:

  • es war nicht auf dem neuesten Stand, also habe ich einige Methodennamen geändert
  • wiederholungskopienschutz hinzugefügt (schlägt nach 4 Versuchen für denselben Blob fehl)
  • fügte ein wenig Protokollierung hinzu - Sie sollten es mit Ihrem eigenen austauschen.
  • führt die Sicherung zwischen zwei Speicherkonten durch (Replizieren von Containern und Blobs)
  • bereinigung hinzugefügt - es werden alte Container entfernt, die nicht benötigt werden (speichert Daten für 16 Tage). Sie können dies jederzeit deaktivieren, da Platz günstig ist.

die Quelle finden Sie unter: https://github.com/ChrisEelmaa/StackOverflow/blob/master/AzureStorageAccountBackup.cs

und so verwende ich es im Controller (beachten Sie, dass Ihr Controller nur vom Azure-Webjob aufrufbar sein sollte - Sie können die Berechtigungsnachweise in den Kopfzeilen prüfen):

[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!"));
    }
}

hinweis: Ich wollte diesen Code als Teil des Beitrags hinzufügen, habe aber 6 Minuten damit verbracht, diesen Code in diesen Beitrag zu integrieren, schlug aber fehl. Die Formatierung funktionierte überhaupt nicht und brach völlig zusammen.

4

Ich habe Azure Data Factory verwendet, um Azure-Speicher mit großer Wirkung zu sichern. Es ist sehr einfach zu bedienen, kostengünstig und funktioniert sehr gut.

Erstellen Sie einfach eine Data Factory (v2), richten Sie Datenverbindungen zu Ihren Datenquellen ein (derzeit werden Azure-Tabellen, Azure-Blobs und Azure-Dateien unterstützt) und richten Sie dann eine Datenkopie-Pipeline ein.

Die Pipelines können zusammengeführt, überschrieben usw. werden, und Sie können benutzerdefinierte Regeln/Platzhalter einrichten.

Sobald Sie die Pipeline eingerichtet haben, sollten Sie einen Zeitplan-Trigger einrichten. Das Backup wird in regelmäßigen Abständen entsprechend Ihren Anforderungen gestartet.

Ich benutze es seit Monaten und es ist perfekt. Kein Code, kein VMS, keine benutzerdefinierten PowerShell-Skripts oder Software von Drittanbietern. Reine Azure-Lösung.

2
SimonGoldstone

Ohne auf Lösungen von Drittanbietern zu verweisen, können Sie durch die Verwendung der in Azure integrierten Funktionen jetzt die folgenden Schritte verwenden, um Ihren Blob zu schützen.

  1. Soft delete für Azure Storage Blobs Der bessere Schritt ist zuerst das Soft Delete zu aktivieren, das sich jetzt in GA befindet: https://Azure.Microsoft.com/de-de/blog/soft -delete-for-Azure-Speicher-Blobs-ga

  2. Lesezugriff auf georedundanten Speicher Der zweite Ansatz ist die Aktivierung der Geo-Replikation für RA-RGA. Wenn das erste Rechenzentrum inaktiv ist, können Sie immer von einem sekundären Replikat in einer anderen Region lesen Weitere Informationen finden Sie hier: https://docs.Microsoft.com/de-de/Azure/storage/common/storage-redundancy-grs

1
Anass Kartit

Sie können einen Snapshot eines Blog-Containers erstellen und dann den Snapshot für eine Sicherung zu einem bestimmten Zeitpunkt herunterladen.

https://docs.Microsoft.com/de-de/Azure/storage/storage-blob-snapshots

Ein Schnappschuss ist eine schreibgeschützte Version eines Blobs, der an einem Punkt in .__ aufgenommen wird. Zeit. Momentaufnahmen sind nützlich, um Blobs zu sichern. Nachdem Sie ein .__ erstellt haben. Momentaufnahme, Sie können sie lesen, kopieren oder löschen, jedoch nicht ändern. + Eine Momentaufnahme eines Blobs ist identisch mit seinem Basis-Blob, mit der Ausnahme, dass die Für den Blob-URI ist ein DateTime-Wert an den Blob-URI angehängt, um die .__ anzuzeigen. Zeitpunkt, zu dem der Schnappschuss aufgenommen wurde. Zum Beispiel, wenn ein Seiten-Blob-URI http://storagesample.core.blob.windows.net/mydrives/myvhd , die Der Snapshot-URI ähnelt http://storagesample.core.blob.windows.net/mydrives/myvhd?snapshot=2011-03-09T01:42:34.9360000Z .

0
TWilly