{"id":207,"date":"2006-09-08T22:37:47","date_gmt":"2006-09-08T20:37:47","guid":{"rendered":"http:\/\/www.glorf.it\/blog\/2006\/09\/08\/sql-talk\/vorschlaege-zur-datensicherung-mit-sql-server-teil-2-offline-sicherung"},"modified":"2006-09-08T23:07:12","modified_gmt":"2006-09-08T21:07:12","slug":"vorschlaege-zur-datensicherung-mit-sql-server-teil-2-offline-sicherung","status":"publish","type":"post","link":"http:\/\/www.glorf.it\/blog\/2006\/09\/08\/sql-talk\/vorschlaege-zur-datensicherung-mit-sql-server-teil-2-offline-sicherung","title":{"rendered":"Vorschl&#228;ge zur Datensicherung mit SQL-Server &#8211; Teil 2: Offline-Sicherung"},"content":{"rendered":"<p>Im ersten Teil der Serie &quot;<a href=\"http:\/\/www.glorf.it\/blog\/2006\/09\/03\/sql-talk\/vorschlaege-zur-datensicherung-mit-sql-server-teil-1-ueberblick\">Vorschl&#228;ge zur Datensicherung mit SQL-Server<\/a>&quot; habe ich ein paar Dinge zum Umfeld und zum Verst&#228;ndnis geschrieben. Im zweiten Teil will ich das Vorgehen beim Offline-Backup beschreiben.<\/p>\n<p>Das Offline-Backup wird &#252;blicherweise &#252;ber Nacht durchgef&#252;hrt, weil ja niemand in der Zeit des Backup arbeiten kann. Damit ergibt sich schon gleich die wichtigste Einschr&#228;nkung: Wenn man ein 24x7-Szenario (es wird &quot;rund-um-die-Uhr&quot; gearbeitet) hat, dann kann es nicht eingesetzt werden.<\/p>\n<p>Grunds&#228;tzlich sollte man gekoppelt mit dem Backup m&#246;glichst auch eine Datenbank-&#220;berpr&#252;fung durchf&#252;hren. Damit man weiss, ob die gesicherte(n) Datenbank(en) auch in Ordnung waren. Daher ergibt sich &#252;blicherweise folgender Ablauf, der z.B. als Batch ausgef&#252;hrt werden kann:<\/p>\n<ul>\n<li>Datenbanken &#252;berpr&#252;fen<\/li>\n<li>SQL-Server-Dienst stoppen<\/li>\n<li>Datenbank-Dateien sichern<\/li>\n<li>Dienst neu starten<\/li>\n<li>Nacharbeiten<\/li>\n<\/ul>\n<p><b>Datenbanken &#252;berpr&#252;fen<\/b><\/p>\n<p>Wenn man die Datenbanken &#252;berpr&#252;ft, dann muss man am n&#228;chsten Morgen kontrollieren, ob die Pr&#252;fung Fehler entdeckte und ggf. die vorherige Sicherung besonders gut aufheben&#8230; Weil,die Sicherung nicht mittels SQL-Mitteln durchgef&#252;hrt wurde kann der Sicherungsteil nicht oder nur in Ausnahmef&#228;llen (z.B. nur eine Datenbank) auf die Pr&#252;fung reagieren. Deswegen wurde die Datenbank auf jeden Fall gesichert, selbst wenn es sich dabei um eine defekte Datenbank handelt.<\/p>\n<p>Es versteht sich eigentlich von selbst, aber zur Sicherheit hier noch der genereller Hinweis bei wiederverwendtbaren Medien: Bitte immer mehrere Sicherungsb&#228;nder verwenden und die Sicherungen von bestimmten Stichtagen generell aufheben. Beispielsweise k&#246;nnte man 10 Generationen verwahren: Mo, Di, Mi, Do, Fr, Mo, Di, Mi, Do, Fr. Die Wochenendsicherungen werden dann dauerhaft archiviert: KW23, KW24, KW25, &#8230;<\/p>\n<p>Dann kann man bei versehentlichem L&#246;schen die Daten der letzten zwei Wochen tagesaktuell restaurieren und &#228;ltere Daten wochengenau.<br \/>Wenn man kein SQL kann, dann kann man diesen Schritt auch weglassen, aber sollte vielleicht &#246;fters mal eine Generation der Sicherungen archivieren, z.B. Mittwochs und Samstags&#8230; \ud83d\ude1b<\/p>\n<p><b>SQL-Server-Dienst stoppen<\/b><\/p>\n<p>Ich bin ein Fan der Kommandozeile, z.B. &quot;net stop mssql$mytestsql&quot;, aber hier gibt es beliebige Freiheiten.<\/p>\n<p><b>Datenbank-Dateien sichern<\/b><\/p>\n<p>Das Sichern ist hier denkbar einfach. Dazu werden alle Dateien der zu sichernden Datenbanken gesichtert: MDF, LDF und, falls vorhanden, NDFs. Wichtig beid er R&#252;cksicherung ist, dass immer alle Dateien einer Datenbank konsistent zur&#252;ckgesetzt werden. Man darf keine unterschiedlichen St&#228;nde mischen.<\/p>\n<p>Ich w&#252;rde empfehlen die Dateien zun&#228;chst in ein Verzechnis auf einer anderen Platte zu sichern und von dort zu archivieren. Das reduziert die Down-Zeit erheblich, kostet aber unter umst&#228;nden viel Plattenplatz. <\/p>\n<p><b>SQL-Server-Dienst starten<\/b><\/p>\n<p>Wieder irgendwie, z.B. auf der Kommandozeile mittels &quot;net start mssql$mytestsql&quot;.<\/p>\n<p><b>Nacharbeiten<\/b><\/p>\n<p>Die Dateien werden nur zu diesem Zeitpunkt gesichert und vorbei am SQL-Server. Daher muss man beachten, dass der &quot;Recovery-Modus&quot; der zu sichernden Datenbank darauf abgestimmt ist. Hat man als Recovery-Modus &quot;Full&quot; oder &quot;Bulk-Logged&quot; gew&#228;hlt, dann wird das Transaktionslog der Datenbank sehr schnell sehr gro&#223;. Deswegen muss man in diesem Fall noch das Transaktionslog der (hoffentlich) erfolgreich gesicherten Datenbanken &quot;abschneiden&quot;.<\/p>\n<p>Statt dessen kann man auch den Modus &quot;Simple&quot; verwenden. Hier werden im Transaktionslog nur die Daten der Transaktionen  gespeichert, die noch nicht im Rahmen eines Checkpoint auf die Platte geschrieben wurden. Damit entf&#228;llt das Nachbearbeiten.<\/p>\n<p>Datenbanken am &quot;SQL Server 2000&quot; haben als Default den Modus, wenn sie an eine MSDE angeh&#228;ngt werden, und &quot;Full&quot;, wenn sie an eine Standard- oder Enterprise-Edition angeh&#228;ngt wurden. Beim 2005er habe ich das noch nicht &#252;berpr&#252;ft. Ich gehe davon aus, dass es immer noch so ist.<\/p>\n<p><b>Vorteile dieser Vorgehensweise<\/b><\/p>\n<ul>\n<li>Sie wird auch von Laien verstanden.<\/li>\n<li>F&#252;r die R&#252;cksicherung werden keine Datenbank-Kenntnisse ben&#246;tigt: Einfach Dienst stoppen, die Dateien zur&#252;ckkopieren, Dienst starten, fertig.<\/li>\n<li>Es ist kein SQL-Server-Verwaltungswerkzeug notwendig.<\/li>\n<li>Sie ist schnell.<\/li>\n<\/ul>\n<p><b>Risiken und Nebenwirkungen<\/b><\/p>\n<ul>\n<li>W&#228;hrend der Down-Phase kann nicht mit den datenbanknutzenden Anwendungen gearbeitet werden.<\/li>\n<li>Die Kopplung mit dem Recovery-Modus &quot;Simple&quot; bietet sich an. Das f&#252;hrt dazu, dass im Crashfall immer auf den letzten Sicherungsstand zur&#252;ckgesetzt werden muss. Man verliert also vermutlich einen Tag Arbeit.<\/li>\n<li>Die Datenbank-Dateien werden komplett kopiert, nicht nur die gef&#252;llten Seiten, wie beim Online-Backup. Daher wird mehr Platz auf dem Sicherungsmedium ben&#246;tigt.<\/li>\n<li>Sollte in ein anderes Verzeichnis kopiert werden, dann muss dort immer ausreichend Platz zur Verf&#252;gung stehen, sonst scheitert die Sicherung. In gewissen Weise ist das bei der Online-Sicherung auch so.<\/li>\n<li>Sollte der Dienst nicht gestoppt werden, dann werden die Dateien nicht kopiert.<\/li>\n<li>Im Falle der R&#252;cksicherung verliert man die Arbeit seit dem Datum der letzten Sicherung erledigt wurde. Daher sollte man jede Nacht sichern&#8230;<\/li>\n<\/ul>\n<p><b>Mein pers&#246;nliches Res&#252;mee:<\/b><\/p>\n<p>Diese Art der Sicherung eignet sich besonders f&#252;r EDV-Laien, die mittlere Anforderungen an die Datenverf&#252;gbarkeit haben. Insbesondere die einfache Art der R&#252;cksicherung ist ein gro&#223;es Plus. (Hinweis: Die Daten-R&#252;cksicherung sollte unbedingt einmal getestet werden&#8230; :-))<\/p>\n<p>Im dritten Teil werde ich die Online-Datensicherung beschreiben.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Im ersten Teil der Serie &quot;Vorschl&#228;ge zur Datensicherung mit SQL-Server&quot; habe ich ein paar Dinge zum Umfeld und zum Verst&#228;ndnis geschrieben. Im zweiten Teil will ich das Vorgehen beim Offline-Backup beschreiben. Das Offline-Backup wird &#252;blicherweise &#252;ber Nacht durchgef&#252;hrt, weil ja niemand in der Zeit des Backup arbeiten kann. Damit ergibt sich schon gleich die wichtigste [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[3],"tags":[],"_links":{"self":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/207"}],"collection":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/comments?post=207"}],"version-history":[{"count":0,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/posts\/207\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/media?parent=207"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/categories?post=207"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.glorf.it\/blog\/wp-json\/wp\/v2\/tags?post=207"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}