Ich muss 10-20 SQL Server 2008 R2-Datenbanken mit einer Größe zwischen 10 und 50 GB sichern, während sie online sind und gleichzeitig von einer einzigen Unternehmensanwendung verwendet werden. Ich muss sie auch in einen Zustand zurückversetzen, der über alle Datenbanken hinweg weitgehend synchronisiert ist (ich kann es mir leisten, dass zwischen den Datenbanken einige Sekunden desynchronisiert werden). Der Zweck besteht darin, Produktionsdaten für QA / DEV-Umgebungen zu erfassen.
Ich möchte unbedingt nicht verlangen, dass Datenbanken vollständig wiederhergestellt werden und dass eine Sicherungsmethode entwickelt wird, mit der Daten für QS-Umgebungen erfasst werden und die von einem Hauptsicherungsvorgang unabhängig bleibt, den ich nicht steuern kann.
Für meine Kunden werden 1-2 Stunden benötigt, um 20 vollständige Backups mit jeweils ~ 30 GB zu erstellen. Dies macht vollständige Sicherungen nacheinander nicht akzeptabel, da die Datenbanken bei einer einfachen Wiederherstellung zu desynchronisiert wären.
Ich suche eine bessere Idee als diese:
IDEE 1: SAN-Level-Snapshot von VM-Festplatten. xcopy MDFs / LDFs vom Schnappschuss.
Sobald die kopierten Dateien an eine andere Serverinstanz angehängt sind, sollte der Wiederherstellungsprozess konsistente Datenbanken erzeugen, die praktisch gleichzeitig als Momentaufnahme vorliegen.
Herum googeln hat mich überzeugt, dass dies eine schlechte Idee ist, zumindest weil ich unter Umständen Desync vs. master / msdb / etc bekomme.
IDEE 2: Koordinieren Sie eine komplexe Sicherung und Synchronisierung aller Datenbanken
Dies erfordert von mir, dass anspruchsvolle Datenbanken vollständig wiederhergestellt werden, was ich nicht möchte. Starten Sie parallele Sicherungen für alle Datenbanken rechtzeitig (T0). Sobald T0 erreicht ist, sichern Sie alle Protokolle (sollte höchstens einige Minuten dauern). Nehmen Sie die resultierenden unzähligen Backups und versuchen Sie, diese wiederherzustellen und Protokolle vorwärts / rückwärts zu rollen, um einen relativ zu T0 konsistenten Status für alle Datenbanken zu erhalten.
Dies erfordert viel Planung und Skripterstellung, damit es zuverlässig verwendet werden kann. Ich würde daher große Anstrengungen unternehmen, um dies zu vermeiden.
Vermisse ich eine andere Lösung?
PS1: Ich hätte gerne db-Schnappschüsse verwendet . Die Idee war, einen Snapshot für jede Datenbank zu erstellen (der in Sekunden abgeschlossen sein sollte) und anschließend nacheinander in den folgenden Minuten / Stunden eine vollständige Sicherung durchzuführen. Stellen Sie dann alle auf einem anderen Server wieder her und stellen Sie alle auf den Snapshot zurück. AFAIK Dieses Szenario ist nicht möglich, da Snapshots nicht zusammen mit der Datenbank gesichert werden können. Sie können nur auf dem Server zurückgesetzt werden, auf dem sie erstellt wurden. Außerdem benötigen sie die Enterprise Edition, die ich nicht für alle Kunden habe.
PS2: Wenn Sie eine Lösung von Drittanbietern kennen, die db-übergreifende synchronisierte Sicherungen erstellen kann, erwähnen Sie diese bitte.