Die Integration von Snapshot-Backups ermöglicht prompte Datenwiederherstellungen, unabhängig von der Größe der Datenbank, sei es für Datenbanken, Gruppen oder Server-Backups, einschließlich der Point-in-Time-Wiederherstellung.
Die Aktivierung dieses Merkmals setzt den I/O-Stream der Datenbank aus und wird durch die Anweisung ALTER DATABASE TestDB1 SET SUSPEND_FOR_SNAPSHOT_BACKUP = ON
eingeleitet. Dieser Artikel vertieft das Verständnis des I/O-Stopps und hebt hervor, dass dieser ausschließlich den Input einschränkt, während weiterhin Leseoperationen auf der Datenbank ausgeführt werden können.
Am Ende dieses Artikels finden Sie ebenfalls die Codeausschnitte mit Erläuterungen auf Git.
Voraussetzungen
Hier erstellen wir zunächst eine Testdatenbank mit einer Tabelle und wenigen Zeilen.
Im Anschluss “frieren” wir die zuvor erstellte Datenbank ein und entfernen alle leeren Puffer aus dem Pufferpool und alle Columnstore-Objekte aus dem Columnstore-Objektpool.
Status der Datenbank und lesende Operationen
Um den Status der Datenbank einzusehen und zu prüfen, ob diese tatsächlich eingefroren ist, rufen wir die Einträge aus der Systemdatenbank “sys.dm_server_suspend_status
” ab und betrachten uns die Ausgabe.
Wie die Ausgabe is_write_io_frozen
mit Wert True
bereits vermuten lässt, sind hier nur schreibende Operationen eingefroren.
Nun testen wir, ob weiterhin lesende Operationen auf der Datenbank möglich sind, indem wir die Werte aus der Tabelle der Testdatenbank abrufen.
Die Abfrage läuft normal durch und wir erhalten eine Ausgabe.
Schreibende Operationen
Nun versuchen wir eine schreibende Operation auf der Datenbank auszuführen, indem wir weitere Werte in die Tabelle einfügen.
Wenn wir diese Abfrage ausführen stellen wir fest, dass diese noch keine Ergebnisse liefert. Dazu betrachten wir uns den Status der Abfrage mithilfe der System Stored Procedure sp_who2
.
Der Status unseres INSERT
Statements steht auf SUSPENDED
. Die Abfrage wurde also noch nicht ausgeführt. Folgend sind keine schreibenden Operationen auf einer eingefrorenen Datenbank mehr möglich. Dies liegt daran, dass schreibende Operationen, wie INSERT
s gesperrt sind. Lesende Operationen sind nach der Abfrage weiterhin möglich.
Snapshot Backup erstellen
Nun erstellen wir das Snapshot Backup der Datenbank. Nach erfolgreichem Abschluss des Backups wird die Datenbank wieder aufgetaut und die schreibenden Operationen mit Status SUSPENDED
nachträglich ausgeführt.
Fazit
Um die Anwendung dieser neuen Funktion erfolgreich zu gestalten, ist es unerlässlich, die Feinheiten des I/O-Freezes in SQL-Snapshot-Backups zu verstehen. Wie in diesem Beitrag dargestellt, konzentriert sich der durch den Befehl ALTER DATABASE SET SUSPEND_FOR_SNAPSHOT_BACKUP = ON
ausgelöste I/O-Freeze gezielt auf Schreibvorgänge, wodurch Lesevorgänge weiterhin möglich sind.
Diese innovative Funktion ermöglicht sofortige Wiederherstellungen und Point-in-Time-Wiederherstellungen für Datenbanksicherungen auf Systemen, die SQL Server 2022 verwenden.
Wenn Sie mehr zu diesem Thema erfahren möchten, stehen Ihnen unsere erfahren Expert:innen bei Rückfragen zur Verfügung. Kontaktieren Sie uns dafür gerne über unser Kontaktformular. Wir freuen uns von Ihnen zu hören!
GitHub
Hier kommen Sie zu den Codebeispielen aus dem Artikel mit weiteren Erläuterungen.