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 wird nur schreibgeschützt verwendet.
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 zu finden, die Datenbank jede Nacht effizient zu aktualisieren, aber ich habe nicht viel Glück. Ich habe mir differenzielle Backups und Transaktionsprotokoll-Backups angesehen, aber um eines davon anwenden zu können, muss zuerst ein vollständiges Datenbank-Backup wiederhergestellt werden. In meinem Fall macht dies den Zweck des differenziellen Backups völlig zunichte, da es mir keine [Ausfall-]Zeit erspart. Ich könnte genauso gut jede Nacht ein vollständiges Backup der Master-Datenbank durchführen und dann einfach das vollständige Backup wiederherstellen, das wäre schneller.
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 aus Geschwindigkeitsgründen einfach nach jedem „inkrementellen“ Backup neu erstellen. Es ist mir nicht gelungen, eine wirklich praktikable Lösung wie diese zu finden.
Ich habe versucht, eine vollständige Wiederherstellung mit Standby in einer Testdatenbank durchzuführen. Auf diese Weise konnte ich die Daten abfragen und später trotzdem das Transaktionsprotokoll und nur ein Transaktionsprotokoll anwenden. Dies war ein eher begrenzter Erfolg, da ich Dinge wie das Hinzufügen eines Indexes nicht tun kann, da dies technisch gesehen ein Schreiben in die Datenbank ist. Dies kommt jedoch dem sehr nahe, wonach ich suche, da die Daten selbst schreibgeschützt sind. Gibt es eine Lösung, die so funktioniert? Ich würde es lieber vermeiden, dies mit der Option Standby zu tun, da sie nicht für diese Verwendung gedacht ist.
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.
Ich fürchte, Replikation könnte die einzige Antwort sein.
Antwort1
Mit der Protokollübermittlung können wir die Hauptdatenbank (300 GB) verfügbar halten und die Protokolle an eine Standby-Kopie auf einem anderen Server übermitteln. Transaktionsprotokolle werden alle 15 Minuten angewendet. Unsere Berichte verwenden die Standby-Kopie.