„Schnelle“ inkrementelle Sicherung von SQL Server?

„Schnelle“ inkrementelle Sicherung von SQL Server?

Ich arbeite an einer sehr großen Datenbank (über 250 GB) mit weit über 225 Millionen Datensätzen. Die Datenbank ist allein aufgrund ihrer schieren Größe schwer zu bearbeiten. Diese Datenbank ist schreibgeschützt.

Wir versuchen, schnellere Hardware zu besorgen, aber in jedem Fall versuche ich, den effizientesten Weg zu finden, mit der Datenbank zu arbeiten. Diese Datenbank muss jede Nacht von einer Masterdatenbank aus aktualisiert werden und die Ausfallzeit muss auf ein Minimum beschränkt werden. Die Masterdatenbank wird von einem Drittanbieter verwaltet.

Ich versuche, den besten Weg zum Aktualisieren der Datenbank zu finden, habe aber nicht viel Glück. Ich habe mir differenzielle und Transaktionsprotokoll-Backups angesehen, aber um sie anwenden zu können, muss zuerst ein vollständiges Backup wiederhergestellt werden. Dies macht in meinem Fall den Zweck eines differenziellen Backups völlig zunichte, da ich genauso gut ein vollständiges Backup der Masterdatenbank durchführen und dann einfach das vollständige Backup jede Nacht wiederherstellen könnte, da dies schneller wäre, als ein vollständiges Backup wiederherzustellen und jede Nacht die differenziellen Backups anzuwenden.

Ich hatte gehofft, eine Lösung zu finden, bei der ich einmal (oder vielleicht einmal im Monat) ein vollständiges Backup durchführen kann und dann einfach eine Art inkrementelles Backup basierend auf dem ursprünglichen vollständigen Backup anwende, das aufeinander aufbaut. Dies würde die Ausfallzeit auf ein Minimum reduzieren, da ich nach Abschluss des ersten vollständigen Backups nur noch jede Nacht inkrementelle Backups anwende. Ich würde den Index einfach nach jedem „inkrementellen“ Backup neu erstellen. Ich habe bisher keine derartige Lösung gefunden.

Ich beschäftige mich gerade mit Datenbanksicherungen und -leistung und recherchiere viel dazu. Ich lese ständig MSDN, aber diese Lösung scheint keine Option zu sein. Ich dachte, ich frage als letzten Ausweg – es gibt hier sicher einige, die große Datenbanken verwalten, bei denen es unpraktisch wäre, jede Nacht eine Wiederherstellung durchzuführen.

Irgendwelche Vorschläge? Ich bin auch offen für Vorschläge/Links zu Seiten zur Leistung, da ich noch nie mit einer Datenbank dieser Größe gearbeitet habe.

Antwort1

Sie beschreibenLog-Versand, aber Sie möchten „differenzielle“ Sicherungen anstelle von Protokollsicherungen verwenden, was das Problem bei Ihrem Ansatz ist. Mit der Protokollübermittlung stellen Sie die Datenbank einmal wieder her, wenden dann Protokollsicherungen an, während sie auf der Hauptsite erstellt werden, und Sie müssen die anfängliche vollständige Sicherungswiederherstellung nie wiederholen. Wenden Sie einfach alle paar Stunden das übermittelte Protokoll an, und Sie haben Ihre schreibgeschützte Kopie zur Verfügung.

Antwort2

Vielleicht würde diese dritte Partei eine ArtReproduzierenum die Änderungen jede Nacht zu übertragen?

Antwort3

Wenn Sie Zugriff auf die Umgebung haben, in der sich die Produktionsdatenbank befindet und die Master- und Nur-Lese-Datenbanken dieselbe Datenbankinstanz sein können, auf der SQL2005/SQL2008 Enterprise Edition ausgeführt wird, können Sie Datenbank-Snapshots verwenden. Dadurch erhalten Sie eine sofortige, schreibgeschützte Kopie der Datenbank.

http://msdn.microsoft.com/en-us/library/ms175158.aspx

Wenn Sie keinen Zugriff auf die Produktionsumgebung haben, können Sie fragen, ob Sie bereit sind, in Ihrer Umgebung eine gespiegelte Datenbank einzurichten. Dadurch können Sie ebenfalls einen Snapshot ausführen. Sie benötigen hierfür allerdings Software und Lizenzen der Enterprise Edition.

http://msdn.microsoft.com/en-us/library/ms175511.aspx

Wenn Sie Enterprise nicht verwenden oder nahezu Live-Daten benötigen, ist die Transaktionsreplikation eine weitere Option.

http://msdn.microsoft.com/en-us/library/ms151176.aspx

Wenn die Wiederherstellung zu lange dauert, sollten Sie über den Kauf einer Software zur Backup-Datenträgerkomprimierung nachdenken. Je nach Art der gespeicherten Daten werden dadurch die Backups/Wiederherstellungen in der Regel um einen Faktor beschleunigt.

Antwort4

Remus hat zuerst geantwortet, aber so würde das Protokollversandszenario funktionieren:

  1. Drittanbieter sendet Ihnen am 1.1. ein vollständiges Backup der Datenbank
  2. Sie stellen die Datenbank in NoRecovery im Standby-Modus wieder her. Dadurch wird die Datenbank als schreibgeschützt (nur für DBOs) eingerichtet.
  3. Ein Drittanbieter sendet Ihnen am 1.2. eine (oder mehrere) Sicherungskopien des Transaktionsprotokolls und Sie wenden diese auf die Datenbank an, um die Änderungen auf den neuesten Stand zu bringen. Nachdem die Sicherung angewendet wurde, befindet sich die Datenbank wieder im Standby-Modus und kann nur gelesen werden.
  4. Vorgang täglich wiederholen

verwandte Informationen