Kann ich vollständige Sicherungen auf mehreren Festplatten durchführen?

8

Derzeit habe ich nur eine Sicherungsdatei, IMTDB.bak, und sie befindet sich auf derselben Festplatte wie die Datenbank selbst. Ich möchte die Redundanz dieser DB-Sicherung erhöhen, indem ich sie im Wesentlichen auf eine andere Festplatte "kopiere". Es wird jedoch die Fehlermeldung "Sicherung für Server fehlgeschlagen. Das Medium ist so formatiert, dass es 2 Medienfamilien unterstützt" angezeigt. Ich denke, dies bedeutet, dass beim Erstellen des Backups nur das Backup auf einem Laufwerk gespeichert werden soll und ich nicht mehr rückwirkend hinzufügen kann. Ich möchte die Sicherung auf dieses andere Laufwerk migrieren (wirklich nur kopieren), aber ich möchte nicht die aktuelle Sicherung löschen müssen, um dies zu tun.

Was mache ich? Bin ich sicher, wenn ich nur IMTDB.bak in einen Ordner auf dem anderen Laufwerk kopiere?

ijustlovemath
quelle
sicher. Die Verwendung des Explorers zum Kopieren der Datei von einem Speicherort an einen anderen ist überhaupt kein Problem. Möglicherweise möchten Sie den Prozess automatisieren, möglicherweise mit Windows Scheduler.
Max Vernon
Wo / wie sehen Sie diesen Fehler: "Sicherung für Server fehlgeschlagen, Das Medium ist so formatiert, dass es 2 Medienfamilien unterstützt"
Max Vernon
Wenn Sie zu Aufgaben -> Sichern gehen und versuchen, "Hinzufügen" auszuführen und die Festplatte auszuwählen, die ich habe.
Ijustlovemath
Wenn Sie dort eine weitere Festplatte hinzufügen, wird die Sicherung einfach auf mehrere Festplatten verteilt, wodurch die Zuverlässigkeit der Sicherungsdatei weiter verringert wird, da die Sicherungsdatei unbrauchbar wird, wenn eine der beiden Festplatten ausfällt. Tun Sie, was @Kin in seiner Antwort vorschlägt, und verwenden Sie den T-SQL- BACKUP DATABASEBefehl, um gleichzeitig an zwei Speicherorten zu sichern.
Max Vernon

Antworten:

12

Da Sie mit dem T-SQL- BACKUP DATABASEBefehl nicht vertraut sind , dachte ich, ich würde einige Details dazu hinzufügen.

Sie möchten wahrscheinlich etwas in der Art der folgenden Anweisung über den Windows Task Scheduler-Dienst ausführen, da Sie keinen Zugriff auf den SQL Server-Agenten haben (aus Ihren anderen Fragen geht hervor, dass Sie SQL Server Express verwenden).

BACKUP DATABASE [xyz]
TO DISK = 'C:\somepath\mybackupfile.bak'
MIRROR TO DISK = 'D:\somepath\myotherbackupfile.bak'
WITH FORMAT
    , INIT
    , SKIP
    , STATS = 1;

Möglicherweise möchten Sie unbedingt in Betracht ziehen, dass die MIRROR TOKlausel auf einen Speicherort verweist, der sich nicht auf Ihrem lokalen Computer befindet. Wenn Sie Ihren lokalen Computer vollständig verlieren, können Sie möglicherweise nicht auf eine der Sicherungsdateien zugreifen. Wenn Sie eine MIRROR TOKlausel angeben, müssen Sie das FORMATSchlüsselwort in der WITHKlausel angeben, wenn Sie diese Sicherungsanweisung zum ersten Mal ausführen.

Sie können den Namen einer Windows-Freigabe verwenden, z. B. \\SomeServer\SQLBackups\MyBackupFile.baksolange die Sicherheitsberechtigungen für die Freigabe den Zugriff auf den Windows Scheduler-Dienst zulassen.

Der WITH FORMAT, INITTeil weist SQL Server an, alle vorhandenen Sicherungen in den Sicherungsdateien zu überschreiben. Sie können dies ändern, WITH NOINITsobald Sie die erste gespiegelte Sicherung abgeschlossen haben, wenn mehrere Sicherungen (dh Sicherungen zu unterschiedlichen Zeitpunkten) in diesen Dateien gespeichert werden sollen. NOSKIPweist SQL Server unter anderem an, nicht nach dem Ablauf der Sicherung zu suchen. STATS = 1zeigt die Ausgabe in 1Prozentschritten an. Sie können diese Nummer beliebig ändern. Ich verwende es 1für sehr große Datenbanken, da es Hinweise auf Fortschritte gibt.

Damit dies über den Windows Task Scheduler-Dienst ausgeführt wird, müssen Sie diesen Befehl (nachdem Sie ihn in SQL Server Management Studio getestet haben) in einer Datei auf Ihrer Festplatte speichern. Nennen wir es C:\somefolder\BackupMyDB.sql. Anschließend möchten Sie dem Windows-Planer den folgenden Befehl hinzufügen:

<path to sqlcmd>sqlcmd -S localhost -E -i C:\somefolder\BackupMyDB.sql

Sie möchten, dass diese Aufgabe als Sie ausgeführt wird.

Sobald Sie dies alles getan haben, möchten Sie ernsthaft darüber nachdenken, das Backup auf einem anderen Computer wiederherzustellen , damit Sie verstehen, wie das geht. Backups sind nur ein Teil eines Disaster Recovery-Plans. Der wohl wichtigere Teil ist das Testen dieses Plans.

Der Wiederherstellungsprozess würde einen Befehl wie den folgenden verwenden:

RESTORE DATABASE [xyz]
FROM DISK = 'D:\somepath\myotherbackupfile.bak'
WITH RECOVERY
    , STATS = 1;

Seien Sie gewarnt, RESTORE DATABASEwenn Sie auf dem Computer ausgeführt werden, auf dem sich Ihre aktuelle Datenbank befindet, kann die aktuelle Datenbank ohne Bestätigung oder Warnung überschrieben werden. Überprüfen Sie daher den Namen der Datenbank [xyz]in meinem Beispiel und die anderen von Ihnen verwendeten Optionen sorgfältig . (Dadurch wird die vorhandene Datenbank nur überschrieben, wenn Sie REPLACEder WITHKlausel das Schlüsselwort hinzufügen. Ich möchte nur betonen, dass Sie vorsichtig sind.)

Max Vernon
quelle
Vielen Dank! Enthält der automatisch erstellte Spiegel diese Sicherungen, da meine .bak-Datei bereits einige Sicherungen enthält? Oder nur die neueste?
Ijustlovemath
Ich würde vorschlagen, diese Datei irgendwohin zu verschieben, wenn Sie sie behalten möchten, da MIRRORSie die Sicherungsdatei bei der ersten Verwendung formatieren müssen, um alle in dieser Datei enthaltenen Sicherungen zu entfernen.
Max Vernon
1
Nochmals vielen Dank für das Detail in Ihrem Beitrag. Wirklich hilfreich für einen Neuling ohne andere Ressourcen!
Ijustlovemath
Gern geschehen. Ich kann nicht genug betonen, wie wichtig eine getestete und zuverlässige Sicherungs- und Wiederherstellungsstrategie ist . Ich habe empfohlen, die Wiederherstellung auf einem anderen Computer zu testen, damit Sie nicht die Möglichkeit haben, Ihre vorhandene Datenbank zu überfrachten. Dies ist beim Lernen einfach.
Max Vernon
5

Sie können die backup database .... MIRROR TO DISK =Datenbank an einem zusätzlichen Speicherort sichern.

Bin ich sicher, wenn ich nur IMTDB.bak in einen Ordner auf dem anderen Laufwerk kopiere?

Ja, Sie können dies tun, sobald die Sicherung abgeschlossen ist.

Hinweis: Stellen Sie sicher, dass Sie T-SQL im Gegensatz zur GUI verwenden, für die nur eingeschränkte Sicherungsoptionen verfügbar sind.

Kin Shah
quelle
Was sind die empfohlenen Optionen hier? Meine Datenbank ist sehr einfach, nur vier Tabellen, von denen drei nur 90.000 Zeilen haben, die vierte ~ 75M. Es ist auch eine feste Größe; Es werden keine weiteren Daten hinzugefügt. Ich werde nur Abfragen dagegen ausführen.
Ijustlovemath
5
Ich würde vorschlagen, dass Sie Ihre Datenbank in den read_onlyModus versetzen und nur ein letztes Backup mit machen COMPRESSION. Bewahren Sie es an einem sicheren Ort auf.
Kin Shah