Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Automatisierte Datenbanktestwiederherstellung in SQL Server

In diesem Artikel geht es um die Automatisierung des Datenbankwiederherstellungsprozesses, der häufig manuell vom DBA oder dem Infrastrukturteam durchgeführt wird, das für die Verwaltung von Datenbankserver(n) und Datenbank(en) verantwortlich ist.

Dieser Artikel hebt auch die Bedeutung der Automatisierung von Datenbankverwaltungsaufgaben wie Datenbanksicherung und -wiederherstellung hervor, um sicherzustellen, dass die Konsistenz und Zuverlässigkeit der Produktionsdatenbank(en) intakt sind.

Darüber hinaus gibt es einige Tipps zur Planung und Implementierung der Automatisierung von Datenbankwiederherstellungsaufgaben in einem realen Szenario.

Wiederherstellung von Datenbanktests und CheckDB (DBA-Perspektive)

Die Bedeutung der Sicherung und Wiederherstellung der SQL Server-Datenbank aus Sicht des Datenbankadministrators oder des Infrastrukturteams (verantwortlich für die Datenbankserververwaltung) ist viel mehr als nur die Ausführung von Sicherung und Wiederherstellung, da dies eine der Möglichkeiten ist, um sicherzustellen, dass die Disaster-Recovery-Strategie (DR) ist gut vorhanden.

Dies bedeutet auch, dass Sicherungs- und Wiederherstellungsvorgänge für Datenbanken effektiver sind, wenn sie von einem anderen Konsistenzprüfungsmechanismus unterstützt werden.

Verwendung des DBCC CHECKDB-Befehls

SQL Server wartet mit einem praktischen Befehl auf, um die Konsistenz einer Datenbank zu überprüfen.

Gemäß der Microsoft-Dokumentation wird der Befehl DBCC CHECKDB verwendet, um die logische und physische Integrität aller Objekte in der Datenbank zu prüfen, indem eine Reihe verschiedener Operationen ausgeführt werden.

Die erfolgreiche Ausführung des Befehls ohne Fehler zeigt an, dass sich die Datenbank in einem stabilen und konsistenten Zustand befindet.

Dieser Befehl kann einfach wie folgt ausgeführt werden, sofern die gewünschte Datenbank verbunden ist:

Datenbanktest-Wiederherstellungsszenario

Betrachten wir ein reales Szenario, in dem ein DBA ständig Sicherungen der Produktionsdatenbank erstellt.

Das Erstellen von Sicherungen garantiert jedoch nicht, dass die Datenbank-Disaster-Recovery, auch bekannt als DR, vorhanden ist, es sei denn, die Datenbank wird erfolgreich wiederhergestellt.

Daher muss die Datenbank aus dem Backup wiederhergestellt werden, um sicherzustellen, dass im Falle eines Datenbankvorfalls die Daten erfolgreich wiederhergestellt werden können.

Die Sicherung der Produktionsdatenbank sollte niemals zu Testzwecken auf dem Produktionsserver wiederhergestellt werden.

Wie also stellt ein DBA sicher, dass mit dem Backup alles in Ordnung ist? Einfach durch Wiederherstellen der letzten Sicherung der Datenbank auf einem anderen Testserver.

Sobald die Datenbanksicherung erfolgreich wiederhergestellt wurde, sollte der Befehl DBCC CHECKDB ausgeführt werden, um sicherzustellen, dass die wiederhergestellte Datenbank konsistent und stabil ist.

Dies ist eine wichtige, aber zeitraubende Aufgabe, die auch viel Sorgfalt erfordert. Idealerweise sollte es automatisiert werden – es sei denn, Ihre organisatorischen Regeln und Vorschriften schränken die Automatisierung dieser speziellen Aufgabe ein.

Wiederherstellung von Datenbanktests automatisieren

Sehen wir uns nun an, wie die Wiederherstellung von Datenbanktests im Detail automatisiert wird.

Datenbanktestwiederherstellung planen

Es ist sehr wichtig, Ihre Schritte so zu planen, dass Sie sie problemlos automatisieren können. Die Planung erfordert außerdem, dass Sie die Voraussetzungen für die Automatisierung von SQL-Aufgaben erfüllen.

Voraussetzungen

Bitte stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind, bevor Sie Datenbankwiederherstellungsaufgaben in SQL Server auf herkömmliche Weise automatisieren:

  1. Ihre Automatisierung steht nicht im Widerspruch zu organisatorischen Regeln und Vorschriften
  2. Sie sind berechtigt, diese Aufgabe zu automatisieren
  3. SQL-Agent wird ausgeführt
  4. Der Datenbankserver, auf dem die Wiederherstellung stattfinden soll, sollte betriebsbereit sein
  5. Der Datenbanksicherungsprozess ist bereits automatisiert und die Sicherung wird an ein Sicherungslaufwerk gesendet
  6. Der Testserver kann auf das Backup-Laufwerk zugreifen

Zusammenfassung der Schritte

  1. Datenbanksicherung läuft auf einem Server
  2. Diese Sicherung wird auf einem Sicherungslaufwerk gespeichert, auf das ein anderer Testserver zugreifen kann
  3. Auf dem Testserver wurde ein SQL-Job geplant, um die Wiederherstellung der Sicherung auszuführen
  4. Der einmal ausgeführte SQL-Job kann durch manuelles Ausführen von DBCC CheckDB auf der wiederhergestellten Datenbank gefolgt werden, kann aber auch automatisiert werden

Referenzartikel

Bitte lesen Sie den Artikel Grundlagen der Automatisierung von SQL Server-Aufgaben, um die Datenbanksicherungsaufgabe zu automatisieren, da dieser Artikel davon ausgeht, dass die Datenbanksicherungsaufgabe bereits automatisiert wurde und die Sicherung auf einem Sicherungslaufwerk gespeichert wird, auf das ein Testserver zugreifen kann.

Replikation der Datenbanksicherungsaufgabe

Nehmen wir an, dass der Backup-Auftrag ausgeführt und ein Backup auf einem Backup-Laufwerk erstellt wurde.

Um diese Aufgabe zu replizieren, werden wir eine Beispieldatenbank mit dem Namen UniversityV7 erstellen wie folgt:

-- (1) Create the UniversityV7 sample database
CREATE DATABASE UniversityV7;
GO

USE UniversityV7

CREATE TABLE [dbo].[Student] (
    [StudentId] INT           IDENTITY (1, 1) NOT NULL,
    [Name]      VARCHAR (30)  NULL,
    [Course]    VARCHAR (30)  NULL,
    [Marks]     INT           NULL,
    [ExamDate]  DATETIME2 (7) NULL,
    CONSTRAINT [PK_Student] PRIMARY KEY CLUSTERED ([StudentId] ASC)
);
GO

INSERT INTO [dbo].[Student]
           ([Name]
           ,[Course]
           ,[Marks]
           ,[ExamDate])
     VALUES
           ('Asif'
           ,'Power BI Fundamentals'
           ,85
           ,'01 Jan 2019'),
		   ('Mike'
           ,'Power BI Fundamentals'
           ,80
           ,'01 Jan 2019'),
		   ('Sadaf'
           ,'Power BI Fundamentals'
           ,75
           ,'01 Jan 2019')
		   
GO

Durch Ausführen dieses Skripts wird die Beispieldatenbank erstellt und gefüllt.

Überprüfen Sie die Datenbank, indem Sie das folgende Skript ausführen:

SELECT [StudentId]
      ,[Name]
      ,[Course]
      ,[Marks]
      ,[ExamDate]
  FROM [UniversityV7].[dbo].[Student]

Die Ausgabe sollte wie folgt aussehen:

Nehmen wir an, dass die Sicherungsaufgabe automatisiert ist. Um diesen Schritt jedoch zu überspringen, müssen wir die Datenbanksicherung noch manuell erstellen und auf einem Sicherungslaufwerk speichern, auf das der Testserver zugreifen kann.

Replizieren Sie die Datenbanksicherungsaufgabe, indem Sie das folgende T-SQL-Skript ausführen:

-- Backup the UniversityV7 sample database using the date stamp
DECLARE @BackupName VARCHAR(100)
SET @BackupName=CONCAT('C:\Backup\UniversityV7-',FORMAT(GETDATE(),'yyyy-MM-dd'),'.bak')
BACKUP DATABASE UniversityV7 TO [email protected] WITH COMPRESSION, INIT;
GO

Prüfung der Datenbanksicherung

Überprüfen Sie die Datenbanksicherung, indem Sie zu dem Ordner navigieren, in dem wir gerade die Sicherung erstellt haben, und sehen Sie sich die Sicherungsdatei an:

Mit einer anderen SQL-Instanz verbinden

Lassen Sie uns nun eine Verbindung zu einer anderen SQL-Instanz herstellen, um einen Testserver zu emulieren. Als erstes ist zu prüfen, ob der SQL Agent läuft oder nicht.

SQL Agent starten (falls nicht ausgeführt)

Klicken Sie mit der rechten Maustaste auf SQL Server-Agent und klicken Sie auf Starten wie unten gezeigt:

Einen neuen Job erstellen

Klicken Sie anschließend mit der rechten Maustaste auf Jobs , klicken Sie auf Neuer Job… und geben Sie dann den Auftragsnamen als „Datenbanktestwiederherstellung“ ein “:

Wählen Sie als Nächstes Schritte aus Klicken Sie im linken Navigationsmenü auf Neu , und geben Sie dann „Datenbanktestwiederherstellung“ ein ” als Schrittname:

Geben Sie das folgende T-SQL-Skript in das Befehlseingabefeld ein, nachdem Sie sichergestellt haben, dass der T-SQL-Typ in der entsprechenden Dropdown-Liste ausgewählt ist.

-- Restore the UniversityV7 sample database 
RESTORE DATABASE UniversityV7 FROM DISK=N'C:\Backup\UniversityV7-2019-08-27.bak'
WITH
MOVE 'UniversityV7' TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLTAB\MSSQL\DATA\UniversityV7_Data.mdf',
MOVE 'UniversityV7_Log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL12.SQLTAB\MSSQL\DATA\UniversityV7_Log.ldf'
,RECOVERY,REPLACE,STATS=10;
GO

Bitte beachten Sie, dass der Pfad C:\Programme\Microsoft SQL Server\MSSQL12.SQLNAME\MSSQL\DATA\UniversityV7_Data.mdf in angegeben ist dieses Skript dient nur zu Demozwecken. Ja Sie müssen dies durch das ersetzen tatsächlich Pfad Ihrer Test-SQL-Serverinstanz.

Klicken Sie abschließend auf OK.

Planen Sie den Job so, dass er in 2 Minuten ausgeführt wird

Klicken Sie mit der rechten Maustaste auf Datenbanktestwiederherstellung job unter Jobs und klicken Sie auf Eigenschaften:

Klicken Sie auf Neu , Geben Sie "Alle 2 Minuten (Test) ein “, und stellen Sie den Zeitplan so ein, dass er nach zwei Minuten ausgeführt wird:

Stellen Sie nach einigen Minuten eine Verbindung zum Testserver her und erweitern Sie die Datenbanken Knoten, um zu sehen, dass die UniversityV7 Die Datenbank wurde erfolgreich durch einen automatisierten SQL Server-Task (Job) wiederhergestellt.

Fühlen Sie sich frei, DBCC CheckDB auszuführen, um sicherzustellen, dass der Wiederherstellungsprozess der Datenbank in Ordnung ist.

Herzliche Glückwünsche! Sie haben den Wiederherstellungsprozess für den Datenbanktest erfolgreich automatisiert.

Dinge zu tun

Nachdem Sie nun die Datenbanksicherung und Testwiederherstellung automatisieren können, versuchen Sie bitte, die folgenden Aufgaben auszuführen, um Ihre Fähigkeiten zu verbessern:

  1. Fügen Sie DBCC CheckDB als Teil des automatisierten Datenbankwiederherstellungsprozesses hinzu
  2. Automatisieren Sie die Sicherung auf einem Server und stellen Sie sie auf einem anderen Testserver wieder her
  3. Automatisieren Sie die Datenbanksicherung und testen Sie Wiederherstellungsaufgaben für mehrere Datenbanken