none
SQL Server 2008 Standard RRS feed

  • Frage

  • Hallo!

    Ich bin gerade dabei, eine kleine, aber feine Backuplösung für eine SQL DB auszuarbeiten.
    Ich habe nun einen Zeitplan erstellt, der tägl. ein Fullbackup macht. Was mir nun Probleme macht, sind wohl eher ein paar algm. Verständnis-Fragen.
    Deshalb wende ich mich hier an die Experten :)

    Also laut meines Wissens enthält die LOG-Datei einer SQL DB alle Änderungen seit des letzten Full-Backups. Wenn ich nun im SQL Manager rechtsklick auf die DB mache, Tasks, Sichern... und dann ein Fullbackup ausführe, werden dann alle Änderungen automatisch vorher noch vom LOG-File in das DATA-File geschrieben? Da ich mit dem Full-Backup ja ein "neues" LOG-File beginne, muss dass ja fast so sein, sonst erleide ich ja Datenverlust.
    Dies war eine allgm. Frage. :)

    Nun noch eine:
    Wenn ich den u.g. Befehl ausführe (als Skript in einem Zeitplan), ist die DB dann definitiv konsistent? Bzw. was ist die einfachste Methode ein konsistentes Backup einer DB zu erstellen? Vorher Verbindungen kappen?

    BACKUP DATABASE TestDB
    TO DISK = 'C:\Backup\test.bak'
    WITH FORMAT;


    Ich weiß, sind vielleicht ein paar newbie-fragen, aber ich blick noc nicht durch. :)

    Vielen Dank für eure Hilfe!

    Gruß
    Tim
    Mittwoch, 11. November 2009 07:23

Antworten

  • Hallo Tim,

    grundsätzlich ist gegen den Zeitplan nichts zu sagen.


    Nur die Protokollsicherungen mußt Du schon bis zur nächsten Vollsicherung aufbewahren.
    Denn nur darüber kannst DU aus der Vollsicherung und ggf. den 17 Protokollsicherungen
    die Datenbank wiederherstellen - wenn z. B. um 23:01 kurz vorm Ende der Vollsicherung
    der Server verschmort ;-)
    Aber auch bei anderen Fehlern (z. B. irrtümliches Daten löschen) kann eine Protokollsicherung
    nützlich sein.  Siehe Wiederherstellungspfade

    Und wenn Du die Vollsicherungen 7 Tage vorhälst, solltest Du das auch mit den
    Protokollen tun. Denn wenn Deine Zeitfenster so groß sind, sollte auch die Zeit
    zum sichern derselben auf externe Medien reichen. Und an ein, zwei Bändern etc.
    mehr sollte man bei einer Sicherung nicht sparen.

    Zudem solltest Du in Deinen Plänen auch eine regelmäßige (tägliche) Prüfung
    der Datenbank auf Konsistenz via DBCC CHECKDB über einen Wartungsschritt
    einplanen.  Denn Fehler der Datenbank landen auch in der Sicherung.

    Zur ersten Sicherung:
    Ganz scheinst Du das immer noch nicht begriffen zu haben. Zunächst:
    Die Daten werden immer ins Protokoll und zudem beim Prüfpunkt in die Datenbank geschrieben.
    Solange Du noch keine Vollsicherung erstellt hast, verhält sich eine Datenbank wie im einfachen
    Wiederherstellungsmodus, d. h. abgeschlossene Transaktionen werden aus dem  Protokoll gelöscht.
    Denn ohne eine Vollsicherung sind die Daten aus dem Protokoll wiederum nutzlos.

    Gruß Elmar
    • Als Antwort markiert Tim Bauer Donnerstag, 12. November 2009 11:57
    Mittwoch, 11. November 2009 14:23
    Beantworter

Alle Antworten

  • Hallo Tim,

    da scheinen doch noch einige Verständnislücken zu existieren.

    Eine Protokolldatei enthält nicht die Änderungen seit einem Backup,  sondern sie
    wird  - bei vollständigem oder massenprotokollierten Wiederherstellungsmodus -
    kontinuierlich weiter geschrieben.
    Deswegen ist eine reine Vollsicherung nicht ausreichend, sondern es muß ebenso
    das Protokoll gesichert werden, ansonsten wächst die Protokolldatei weiter, bis der
    Plattenplatz aufgebraucht ist (und der SQL Server seinen Dienst einstellt).

    Eine Vollsicherung sichert nur die Teile des Protokolls, die zur Konsistenz der
    Sicherung notwendig sind, verändert aber nichts am Protokoll selbst.
    Erst durch eine Transaktionprotokollsicherung werden die Daten im Protokoll
    gesichert und die inaktiven Teile entfernt.

    Wobei das Protokoll manchmal sogar das "wertvollere" ist, denn mit Hilfe
    einer Kette  von Protokollsicherungen kann man von jeder Vollsicherung
    ausgehend die Datenbank wiederherstellen.
    Häufige Protokollsicherungen sind bei aktiven Datenbanken wichtig,
    da sich nur so der Datenverlust im Fall der Fälle minimieren lassen kann.

    Lies Dir bitte genau durch
    Sichern und Wiederherstellen von Datenbanken in SQL Server

    und zum Transaktionsprotokoll empfehlenswert:
    Architektur des Transaktionsprotokolls

    Gruß Elmar
    Mittwoch, 11. November 2009 09:38
    Beantworter
  • Hallo Elmar,

    vielen Dank für deine Antwort.
    Habe mich nun ein bisschen eingelesen und denke, dass ich nun wenigstens ein wenig mehr Durchblick habe.
    Ich habe nun folgendes Backup-Konzept erstellt:

    tägl.: 23 Uhr Vollsicherung der DB
    stündl. zwischen 06:00 und 22:00 Uhr : Sicherung des Transaktionsprotokolls

    Die Vollsicherungen der DB halte ich 7 Tage vor. Da aus deiner Aussage hervor geht, dass die Protokolldatei nicht verändert wird bei einem Vollbackup reicht es ja aus, wenn ich das Protokollbackup nur eine Stunde vorhalte, oder? D.h. die Sicherung der Protokolldatei überschreibt die alte Backupdatei jede Stunde. Das dies nicht sonderlich sicher ist, ist mir klar (Im Falle, dass das Backup des Trasprotokolls defekt ist muss ich auf das letzte Vollbackup zurück) Datenverlust habe ich ja durch das ständige überschreiben des Backups keinen, oder?

    Achso, noch eine allgemeine Frage... Wenn ich nun eine neue DB erstelle (vollständiger Wiederherstellungsmodus) und nie ein Backup machen würde. Würden dann alle Änderungen im Transaktionsprotokoll stehen bleiben? Werden diese nie automatische in das Data-File übertragen? Ist doch meines Wissens bei einer Exchange-DB so...

    Gruß
    Tim
    Mittwoch, 11. November 2009 13:52
  • Hallo Tim,

    grundsätzlich ist gegen den Zeitplan nichts zu sagen.


    Nur die Protokollsicherungen mußt Du schon bis zur nächsten Vollsicherung aufbewahren.
    Denn nur darüber kannst DU aus der Vollsicherung und ggf. den 17 Protokollsicherungen
    die Datenbank wiederherstellen - wenn z. B. um 23:01 kurz vorm Ende der Vollsicherung
    der Server verschmort ;-)
    Aber auch bei anderen Fehlern (z. B. irrtümliches Daten löschen) kann eine Protokollsicherung
    nützlich sein.  Siehe Wiederherstellungspfade

    Und wenn Du die Vollsicherungen 7 Tage vorhälst, solltest Du das auch mit den
    Protokollen tun. Denn wenn Deine Zeitfenster so groß sind, sollte auch die Zeit
    zum sichern derselben auf externe Medien reichen. Und an ein, zwei Bändern etc.
    mehr sollte man bei einer Sicherung nicht sparen.

    Zudem solltest Du in Deinen Plänen auch eine regelmäßige (tägliche) Prüfung
    der Datenbank auf Konsistenz via DBCC CHECKDB über einen Wartungsschritt
    einplanen.  Denn Fehler der Datenbank landen auch in der Sicherung.

    Zur ersten Sicherung:
    Ganz scheinst Du das immer noch nicht begriffen zu haben. Zunächst:
    Die Daten werden immer ins Protokoll und zudem beim Prüfpunkt in die Datenbank geschrieben.
    Solange Du noch keine Vollsicherung erstellt hast, verhält sich eine Datenbank wie im einfachen
    Wiederherstellungsmodus, d. h. abgeschlossene Transaktionen werden aus dem  Protokoll gelöscht.
    Denn ohne eine Vollsicherung sind die Daten aus dem Protokoll wiederum nutzlos.

    Gruß Elmar
    • Als Antwort markiert Tim Bauer Donnerstag, 12. November 2009 11:57
    Mittwoch, 11. November 2009 14:23
    Beantworter
  • Alles klar, jetzt hab ichs! :)

    Ich danke Dir!
    Donnerstag, 12. November 2009 11:58