it-swarm.com.de

Wie kann ich eine große SQL Server-Datenbank sichern, ohne die Leistung zu beeinträchtigen?

Wir haben Berichte über Abfragen erhalten, die langsam ausgeführt werden oder am frühen Morgen eine Zeitüberschreitung aufweisen. Der einzige Job, den ich sehe und der meiner Meinung nach dies beeinflussen könnte, ist unser Datenbanksicherungsjob.

Die Datenbank selbst hat ungefähr 300 GB, und der Sicherungsjob beginnt um 4:30 Uhr und endet erst kurz nach 7:00 Uhr. Die aktuelle Syntax unseres Sicherungsjobs lautet:

BACKUP DATABASE [DatabaseName]
TO DISK = N'E:\Database Backups\DatabaseName.Bak'
WITH INIT, NOUNLOAD, NAME = N'DatabaseName.Bak',
NOSKIP, STATS = 10, NOFORMAT

E:\ ist eine Partition auf dem Server, die sowohl die Datenbanken als auch die Datenbanksicherungen enthält.

Es sollte wahrscheinlich auch beachtet werden, dass dies ein virtueller Server ist, kein dedizierter eigenständiger Server. Wir haben direkt nach dem Wechsel zu einem virtuellen Server Beschwerden über Verlangsamungen während des Sicherungsprozesses erhalten, daher denke ich, dass dies möglicherweise damit zusammenhängt.

Gibt es eine Möglichkeit, diesen Sicherungsjob auszuführen, damit die Abfrageleistung während der Ausführung nicht beeinträchtigt wird?

Wir verwenden SQL Server 2005

18
Rachel
  1. Isolieren Sie die Sicherungs-E/A vom Rest der E/A auf Ihrem System. Während es länger dauern kann und anfälliger für Schluckauf ist, kann das Sichern über das Netzwerk anstelle einer lokalen Festplatte dazu beitragen, die direkten Auswirkungen auf die Instanz zu verringern. Selbst in einer virtuellen Maschine sollten Sie in der Lage sein, anderen Speicher verfügbar zu machen, damit SQL Server auf ein anderes E/A-Subsystem schreiben kann.
  2. Es ist unwahrscheinlich, dass es irgendeinen Unterschied macht, aber wenn dies von einem Job ausgeführt wird, warum müssen Sie die Option STATS verwenden? Sind Sie sicher, dass Sie die anderen Optionen benötigen (NOUNLOAD, NOSKIP, NOFORMAT)? Ich habe keine umfangreichen Leistungstests für die gesamte Optionsmatrix durchgeführt, aber meiner Meinung nach sollten Sie nur die Optionen verwenden, von denen Sie wissen, dass Sie sie benötigen.
  3. Führen Sie Ihre vollständigen Sicherungen zu einem anderen Zeitpunkt aus, der die reguläre Benutzeraktivität nicht beeinträchtigt. Dies ist nicht immer möglich, aber selbst im 24/7-Betrieb gibt es Spitzen- und Ruhezeiten.
  4. Wenn Sie zu 2008+ wechseln, können Sie die Sicherungskomprimierung nutzen (Enterprise in 2008, Standard oder Enterprise in 2008 R2 +). Wenn Sie nicht auf 2008 umsteigen können oder nicht über die entsprechende Edition verfügen, gibt es Backup-Tools von Drittanbietern, die die Komprimierung für Sie durchführen, und alle sind ziemlich gut darin. Seit 2008 kann ich native Komprimierung verwenden und bin dort sowohl mit der Geschwindigkeit als auch mit der Komprimierung in% sehr zufrieden, ohne dass ich weiter in Drittanbieter investieren muss. Aber mit 2005 erinnere ich mich an einen guten Erfolg mit Red-Gate SQL Backup ; Quest LiteSpeed ist auch ziemlich gut, aber ich habe keine Ahnung, welche Anstrengungen seit der Übernahme von Dell unternommen werden.
  5. Wenn sich Ihre Datenbanken in der vollständigen Wiederherstellung befinden, können Sie zwischen den vollständigen Sicherungen länger warten und das gegen das Wissen eintauschen, dass Sie möglicherweise mehr Protokolle wiederherstellen müssen, wenn Sie zu einem bestimmten Zeitpunkt eine Wiederherstellung durchführen müssen. Sie können diese Option mit dem folgenden Vorschlag von ALi kombinieren, während der Woche Diffs zu nehmen. Wenn Sie sich am Donnerstag erholen müssten, müssten Sie 1 vollständiges, 1 Diff und die Protokolle seit dem Diff wiederherstellen.
  6. Wenn Sie viele veraltete und unveränderte Daten haben, können Sie diese in einer anderen Datenbank mit einem anderen Wiederherstellungsplan oder zumindest in verschiedenen Dateigruppen hosten und Ihre Sicherungsvorgänge auf diese Weise aufteilen. Wenn Sie über Referenz- oder Archivdaten verfügen, die schreibgeschützt sein können, und wenn Sie sich in einer einfachen Wiederherstellung befinden, können Sie diese in eine eigene schreibgeschützte Dateigruppe verschieben, einmal sichern und müssen sie nicht in Ihre nächtlichen Sicherungen aufnehmen immer wieder. Siehe diese MSDN-Themen:

Stückweise Wiederherstellung

Beispiel: Stückweise Wiederherstellung nur einiger Dateigruppen (einfaches Wiederherstellungsmodell)

21
Aaron Bertrand

Dies ist ein häufiges Problem, es gibt mehrere Lösungen und hängt wirklich von Ihrer Umgebung ab. Lassen Sie uns sie durchgehen:

1 - Backup-Komprimierung im laufenden Betrieb

2008 wurde die R1-Sicherungskomprimierung in Enterprise verfügbar, 2008R2 in Standard. Das ist riesig. Das spart Ihnen viel Zeit. Wenn Sie ein Upgrade durchführen können, versuchen Sie es. Wenn Sie dies nicht können, lesen Sie das Dienstprogramm RedGates HyperBak oder Quest LiteSpeed . Beide haben eine kostenlose Testversion.

2- Voll- und Diff-Backups

Ich habe eine 2-TB-Produktdatenbank geerbt, die für eine große Internetfirma, die ich ausgearbeitet habe, viele Zeitüberschreitungen verursacht. Wir haben vollständige und differenzielle Backups aktiviert, was uns viel Zeit gespart hat. Ich würde am Sonntag um 12:00 Uhr, wenn die Aktivität gering war, ein vollständiges Backup erstellen und während der Woche Unterschiede machen. Das hat viel Platz gespart. Die Arbeit von Diff unterscheidet sich von den Transaktionsprotokollen, da sie darauf angewendet werden, welche Datenbankseiten geändert wurden. Alle geänderten Seiten werden gesichert. Sie führen also eine vollständige Wiederherstellung durch und anschließend die Diff-Wiederherstellung, um die geänderten Seiten hinzuzufügen.

3- Was ist Ihr Engpass?

Eine Engpassanalyse ist wichtig für die Diagnose. Sichern Sie auf demselben Festplattenarray wie Ihre Datendateien? Werden Ihre Datendateien gebunden? Was ist Ihre DISK SEC/READ und DISK SEC/WRITE für die Datenplatten während der Sicherung? Ich habe die Backups geändert, um 4 Dateien zu erstellen. Jede Datei hat einen eigenen Thread-Writer und in unserem SAN hat das super geklappt. Testen Sie es, ich habe mich 45 Minuten lang rasiert, indem ich nur 4 Sicherungsdateien erstellt habe. Stellen Sie einfach sicher, dass Ihre oben aufgeführten Festplattenmetriken sind niedrig. Holen Sie sich eine Grundlinie.

4- Replizieren Sie auf einen anderen Server und sichern Sie diese

Dieser ist etwas fortgeschritten. Sie müssen sicherstellen, dass Ihre replizierte Datenbank auf dem neuesten Stand ist, und Sie müssen dafür ordnungsgemäß überwacht werden. In diesem Fall können Sie einfach die replizierte Datenbank sichern.

8
Ali Razeghi