
Wir führen unsere ERP-Software auf einem SQL Server 2016-Server als VM auf VMware ESXi aus. Derzeit haben wir die VM mit zwei Laufwerken konfiguriert, wobei die Daten auf eines und die Protokolle auf das andere Laufwerk gehen. Wir hatten ein Problem, als die VM beschädigt wurde, und sind auf ein VEEAM-Backup zurückgegriffen. Die Wiederherstellung dauerte ziemlich lange, war aber erfolgreich. Leider gingen dabei etwa 4 Stunden an Daten verloren. Und da die Transaktionsprotokolle mit dem Server kaputt gingen, konnten wir keine Wiederherstellung aus den Transaktionsprotokollen durchführen.
Wir haben also darüber nachgedacht, die Transaktionsprotokolle auf eine andere Netzwerkfreigabe zu schreiben. Aber beim Versuch, dies in einer Testdatenbank einzurichten, scheint es, dass SQL Server dies nicht zulässt.
Gibt es eine Möglichkeit, dies zu erreichen? Ist die Leistung dadurch erheblich beeinträchtigt? Gibt es einen besseren Ansatz?
Antwort1
Gibt es eine Möglichkeit, dies zu erledigen?
Ja, aber das möchten Sie wahrscheinlich nicht. Sie können aktivierenAblaufverfolgungsflagge 1807um SQL Server dazu zu bringen, einen UNC-Pfad für seine Daten- und Protokolldateien zu verwenden. Aus dieser Dokumentation geht jedoch hervor:
Microsoft empfiehlt grundsätzlich die Verwendung eines Storage Area Network (SAN) oder einer lokal angeschlossenen Festplatte zum Speichern Ihrer Microsoft SQL Server-Datenbankdateien, da diese Konfiguration die Leistung und Zuverlässigkeit von SQL Server optimiert.
(Obwohl die verlinkte Dokumentation angibt, dass SQL 2016 dies standardmäßig zulassen sollte, müssen Sie den Hinweis „es scheint, dass SQL Server dies nicht zulässt“ näher ausführen.)
Gibt es erhebliche Leistungseinbußen?
Es kommt darauf anvon Ihrer Hardware. Es hängt davon ab, wo sich der „lokale“ Speicher befindet – rotierende Festplatten im ESXi-Host, in einem SAN oder woanders. Und es hängt vom Speicher ab, der der Netzwerkfreigabe zugrunde liegt, die Sie verwenden möchten. Sie könnten auf derselben Hardware basieren, in welchem Fall die Leistungsunterschiede auf einen gewissen VMware-Overhead zurückzuführen sein könnten. Microsoft geht in dem oben verlinkten Dokument ausführlich auf Leistungsaspekte ein.
Gibt es einen besseren Ansatz?
Ja
Die Transaktionsprotokolldateien selbst *.ldf
sind (normalerweise) nicht das, was Sie zur Wiederherstellung nach einem Desaster verwenden möchten. Es ist angemessen, sie lokal auf dem Server zu haben. Und *.mdf
es ist eine gute Sache, sie (normalerweise) auf einem anderen Laufwerk als die Datendateien zu speichern, wie Sie es getan haben.
Wenn Sie nach einem Desaster eine Wiederherstellung aus einem Backup durchführen müssen, führen Sie die Wiederherstellung aus einem Voll-Backup durch, dann möglicherweise aus einigen Differenzial-Backups und dann möglicherweise aus einigen Transaktionsprotokoll-Backups. Daher sollten Sie IhreBackupsan einen anderen Ort als Ihren Server. Oder zumindest, wenn Sie sie lokal schreiben müssen, verwenden Sie einen Prozess, der sie sofort an einen anderen Ort kopiert. Wie Sie festgestellt haben, führen viele Arten von Fehlern dazu, dass alle lokalen Daten unbrauchbar werden.
Es gibt zahlreiche Tutorials zum Einrichten eines geeigneten Sicherungsmechanismus.Brent Ozar Unbegrenzthat mehrere gute.