Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Zautomatyzuj przywracanie testowe bazy danych w SQL Server

W tym artykule omówiono automatyzację procesu przywracania bazy danych, który często jest wykonywany ręcznie przez administratora baz danych lub zespół ds. infrastruktury odpowiedzialny za zarządzanie serwerami baz danych i bazami danych.

W tym artykule podkreślono również znaczenie automatyzacji zadań administracyjnych baz danych, takich jak tworzenie kopii zapasowych i przywracanie bazy danych, aby zapewnić nienaruszoną spójność i niezawodność produkcyjnych baz danych.

Dodatkowo będzie kilka wskazówek, jak zaplanować i wdrożyć automatyzację zadań przywracania bazy danych w rzeczywistym scenariuszu.

Przywracanie testów bazy danych i CheckDB (perspektywa DBA)

Znaczenie tworzenia kopii zapasowych i przywracania bazy danych SQL Server z punktu widzenia administratora bazy danych lub zespołu ds. infrastruktury (odpowiedzialnego za zarządzanie serwerem bazy danych) to znacznie więcej niż tylko wykonywanie kopii zapasowych i przywracanie, ponieważ jest to jeden ze sposobów zapewnienia strategia odzyskiwania po awarii (DR) jest dobrze wdrożona.

Oznacza to również, że operacje tworzenia kopii zapasowych i przywracania bazy danych są bardziej efektywne, jeśli są obsługiwane przez jakikolwiek inny mechanizm sprawdzania spójności.

Korzystanie z polecenia DBCC CHECKDB

SQL Server dostarcza przydatne polecenie sprawdzające spójność bazy danych.

Zgodnie z dokumentacją Microsoft, polecenie DBCC CHECKDB służy do sprawdzania logicznej i fizycznej integralności wszystkich obiektów w bazie danych poprzez wykonanie szeregu różnych operacji.

Pomyślne wykonanie polecenia bez żadnych błędów wskazuje, że baza danych jest w stabilnym i spójnym stanie.

To polecenie można po prostu wykonać w następujący sposób, pod warunkiem, że podłączona jest żądana baza danych:

Scenariusz przywracania testowego bazy danych

Rozważmy rzeczywisty scenariusz, w którym administrator baz danych konsekwentnie tworzy kopie zapasowe produkcyjnej bazy danych.

Jednak tworzenie kopii zapasowych nie gwarantuje, że odzyskiwanie po awarii bazy danych, znane również jako DR, będzie miało miejsce, chyba że baza danych zostanie pomyślnie przywrócona.

Dlatego baza danych musi zostać przywrócona z kopii zapasowej, aby zapewnić, że w przypadku jakiegokolwiek incydentu z bazą danych dane będą mogły zostać pomyślnie przywrócone.

Kopii produkcyjnej bazy danych nigdy nie należy przywracać na serwerze produkcyjnym w celach testowych.

W jaki więc sposób administrator DBA zapewnia, że ​​kopia zapasowa jest w porządku? Po prostu przywracając najnowszą kopię zapasową bazy danych na innym serwerze testowym.

Po pomyślnym przywróceniu kopii zapasowej bazy danych należy wykonać polecenie DBCC CHECKDB, aby upewnić się, że przywrócona baza danych jest spójna i stabilna.

Jest to ważne, ale czasochłonne zadanie, które wymaga również dużej uwagi. Najlepiej byłoby, gdyby było to zautomatyzowane – chyba że zasady i przepisy organizacyjne ograniczają automatyzację tego konkretnego zadania.

Automatyczne przywracanie testowej bazy danych

Zobaczmy teraz, jak szczegółowo zautomatyzować przywracanie testów bazy danych.

Planowanie testowego przywracania bazy danych

Bardzo ważne jest zaplanowanie swoich kroków, aby móc je z łatwością zautomatyzować. Planowanie wymaga również spełnienia warunków wstępnych automatyzacji zadań SQL.

Warunki

Upewnij się, że spełnione są następujące warunki wstępne, zanim zautomatyzujesz zadania przywracania bazy danych na serwerze SQL w tradycyjny sposób:

  1. Twoja automatyzacja nie koliduje z zasadami i przepisami organizacyjnymi
  2. Masz uprawnienia do automatyzacji tego zadania
  3. Agent SQL działa
  4. Serwer bazy danych, na którym ma nastąpić przywracanie, powinien być uruchomiony
  5. Proces tworzenia kopii zapasowej bazy danych jest już zautomatyzowany, a kopia zapasowa jest wysyłana na dysk kopii zapasowej
  6. Dysk kopii zapasowej jest dostępny dla serwera testowego

Podsumowanie kroków

  1. Kopia zapasowa bazy danych działa na serwerze
  2. Ta kopia zapasowa jest zapisywana na dysku zapasowym dostępnym przez inny serwer testowy
  3. Zaplanowano zadanie SQL na serwerze testowym, aby uruchomić przywracanie kopii zapasowej
  4. Po uruchomieniu zadania SQL można ręcznie uruchomić DBCC CheckDB na przywróconej bazie danych, ale można je również zautomatyzować

Artykuł referencyjny

Zapoznaj się z artykułem Podstawy automatyzacji zadań SQL Server, aby zautomatyzować zadanie tworzenia kopii zapasowej bazy danych, ponieważ ten artykuł zakłada, że ​​zadanie tworzenia kopii zapasowej bazy danych zostało już zautomatyzowane i zapisuje kopię zapasową na dysku kopii zapasowej, który jest dostępny dla serwera testowego.

Replikowanie zadania kopii zapasowej bazy danych

Załóżmy, że zadanie kopii zapasowej zostało uruchomione, a kopia zapasowa została utworzona na dysku kopii zapasowej.

Aby powtórzyć to zadanie, utworzymy przykładową bazę danych o nazwie UniversityV7 w następujący sposób:

-- (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

Uruchomienie tego skryptu powoduje utworzenie i wypełnienie przykładowej bazy danych.

Sprawdź bazę danych, uruchamiając następujący skrypt:

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

Dane wyjściowe powinny wyglądać następująco:

Załóżmy, że zadanie kopii zapasowej jest zautomatyzowane. Jednak, aby pominąć ten krok, nadal musimy ręcznie utworzyć kopię zapasową bazy danych i zapisać ją na dysku kopii zapasowej dostępnym dla serwera testowego.

Zreplikuj zadanie kopii zapasowej bazy danych, uruchamiając następujący skrypt T-SQL:

-- 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

Sprawdzenie kopii zapasowej bazy danych

Sprawdź kopię zapasową bazy danych, przechodząc do folderu, w którym właśnie utworzyliśmy kopię zapasową i wyświetl plik kopii zapasowej:

Połącz się z inną instancją SQL

Teraz połączmy się z inną instancją SQL, aby emulować serwer testowy. Pierwszą rzeczą do sprawdzenia jest to, czy agent SQL działa, czy nie.

Uruchom agenta SQL (jeśli nie jest uruchomiony)

Kliknij prawym przyciskiem myszy SQL Server Agent i kliknij Rozpocznij jak pokazano poniżej:

Utwórz nową pracę

Następnie kliknij prawym przyciskiem myszy Praca , kliknij opcję Nowa oferta pracy… a następnie wpisz nazwę zadania jako „Przywracanie testowe bazy danych ”:

Następnie wybierz Kroki w lewym menu nawigacyjnym kliknij Nowy , a następnie wpisz „Przywracanie testowe bazy danych ” jako nazwa kroku:

Wpisz następujący skrypt T-SQL w polu wprowadzania Polecenia po upewnieniu się, że typ T-SQL jest wybrany na odpowiedniej liście rozwijanej.

-- 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

Pamiętaj, że ścieżka C:\Program Files\Microsoft SQL Server\MSSQL12.SQLNAME\MSSQL\DATA\UniversityV7_Data.mdf podana w ten skrypt służy wyłącznie do celów demonstracyjnych. T musisz to zastąpić rzeczywiste ścieżka testowej instancji serwera SQL.

Na koniec kliknij OK.

Zaplanuj uruchomienie zadania za 2 minuty

Kliknij prawym przyciskiem myszy Przywracanie testowe bazy danych praca pod Praca i kliknij Właściwości:

Kliknij Nowy , wpisz „Co 2 minuty (testowanie) ” i ustaw harmonogram tak, aby był uruchamiany po dwóch minutach:

Po kilku minutach połącz się z serwerem testowym i rozwiń Bazy danych węzła, aby zobaczyć, że UniversityV7 baza danych została pomyślnie przywrócona przez automatyczne zadanie serwera SQL (zadanie).

Zachęcamy do uruchomienia DBCC CheckDB, aby upewnić się, że proces przywracania bazy danych przebiega prawidłowo.

Gratulacje! Pomyślnie zautomatyzowałeś proces przywracania testowej bazy danych.

Rzeczy do zrobienia

Teraz, gdy możesz zautomatyzować tworzenie kopii zapasowych bazy danych i przywracanie testów, spróbuj wykonać następujące zadania, aby poprawić swoje umiejętności:

  1. Dodaj DBCC CheckDB jako część zautomatyzowanego procesu przywracania bazy danych
  2. Automatyzacja tworzenia kopii zapasowej na jednym serwerze i przywracanie jej na innym serwerze testowym
  3. Automatyzacja zadań tworzenia kopii zapasowej bazy danych i przywracania testów dla wielu baz danych


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server w systemie Linux

  2. Jak wygenerować losową liczbę dla każdego wiersza w zaznaczeniu T-SQL?

  3. Zapytanie cykliczne programu SQL Server

  4. Zaktualizowałem sterownik ODBC programu SQL Server i negatywnie wpłynęło to na wydajność. Co mogę zrobić?

  5. Przełączanie partycji w SQL Server (T-SQL)