Тази статия говори за автоматизиране на процеса на възстановяване на база данни, който често се извършва ръчно от DBA или инфраструктурния екип, отговорен за управлението на сървър(и) на база данни и база данни(и).
Тази статия също така подчертава важността на автоматизирането на задачите за администриране на база данни, като архивиране и възстановяване на база данни, за да се гарантира, че последователността и надеждността на производствената база данни(и) са непокътнати.
Освен това ще има някои съвети как да планирате и внедрите автоматизация на задачата за възстановяване на база данни в реален сценарий.
Тестово възстановяване на базата данни и проверка на базата данни (DBA перспектива)
Значението на архивирането и възстановяването на база данни на SQL Server от гледна точка на администратора на базата данни или инфраструктурния екип (отговорен за управлението на сървъра на база данни) е много повече от просто извършване на архивиране и възстановяване, тъй като това е един от начините да се гарантира, че Стратегията за възстановяване при бедствия (DR) е добре изградена.
Това също означава, че операциите за архивиране и възстановяване на база данни са по-ефективни, ако се поддържат от друг механизъм за проверка на последователността.
Използване на командата DBCC CHECKDB
SQL Server предлага удобна команда за проверка на последователността на базата данни.
Според документацията на Microsoft, командата DBCC CHECKDB се използва за проверка на логическата и физическа цялост на всички обекти в базата данни чрез извършване на редица различни операции.
Успешното изпълнение на командата без никакви грешки показва, че базата данни е в стабилно и последователно състояние.
Тази команда може просто да се изпълни, както следва, при условие че желаната база данни е свързана:
Сценарий за тестово възстановяване на базата данни
Нека разгледаме реален сценарий, при който DBA постоянно създава резервни копия на производствената база данни.
Създаването на резервни копия обаче не гарантира, че аварийното възстановяване на базата данни, известно още като DR, е на място, освен ако базата данни не бъде възстановена успешно.
Така че базата данни трябва да бъде възстановена от архива, за да се гарантира, че в случай на инцидент с базата данни данните могат да бъдат възстановени успешно.
Резервното копие на производствената база данни никога не трябва да се възстановява на производствения сървър за целите на тестване.
И така, как DBA гарантира, че архивирането е наред? Просто като възстановите най-новото архивно копие на базата данни на друг тестов сървър.
След като архивът на базата данни е възстановен успешно, трябва да се изпълни командата DBCC CHECKDB, за да се гарантира, че възстановената база данни е последователна и стабилна.
Това е важна, но отнемаща време задача, която също изисква много грижи. В идеалния случай тя трябва да бъде автоматизирана – освен ако вашите организационни правила и разпоредби не ограничават автоматизацията на тази конкретна задача.
Автоматизиране на тестовото възстановяване на базата данни
Нека сега да видим подробно как да автоматизираме тестовото възстановяване на базата данни.
Планиране на тестово възстановяване на базата данни
Много е важно да планирате стъпките си, така че да можете да ги автоматизирате с лекота. Планирането изисква също да изпълните предварителните условия за автоматизация на SQL задачи.
Предварителни условия
Моля, уверете се, че са изпълнени следните предварителни условия, преди да автоматизирате задачите за възстановяване на база данни в SQL сървър по традиционния начин:
- Вашата автоматизация не противоречи на организационните правила и разпоредби
- Упълномощени сте да автоматизирате тази задача
- Агентът на SQL работи
- Сървърът на базата данни, на който ще се извърши възстановяването, трябва да работи и да работи
- Процесът за архивиране на базата данни вече е автоматизиран и архивирането се изпраща на резервно устройство
- Архивното устройство е достъпно от тестовия сървър
Резюме на стъпките
- Архивирането на базата данни се изпълнява на сървър
- Това архивиране се запазва на резервно устройство, достъпно от друг тестов сървър
- На тестовия сървър е насрочено SQL задание за стартиране на възстановяването на архива
- Заданието на SQL веднъж стартирано може да бъде последвано от ръчно стартиране на DBCC CheckDB във възстановената база данни, но също така може да бъде автоматизирано
Референтна статия
Моля, вижте статията Основи на автоматизацията на задачите на SQL Server, за да автоматизирате задачата за архивиране на база данни, тъй като тази статия предполага, че задачата за архивиране на база данни вече е автоматизирана и запазва архива на резервно устройство, което е достъпно от тестов сървър.
Репликиране на задачата за архивиране на база данни
Да приемем, че задачата за архивиране е изпълнена и е създадено архивиране на резервно устройство.
За да повторим тази задача, ще създадем примерна база данни, наречена UniversityV7 както следва:
-- (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
Изпълнението на този скрипт създава и попълва примерната база данни.
Проверете базата данни, като изпълните следния скрипт:
SELECT [StudentId] ,[Name] ,[Course] ,[Marks] ,[ExamDate] FROM [UniversityV7].[dbo].[Student]
Резултатът трябва да бъде както следва:
Да приемем, че задачата за архивиране е автоматизирана. Въпреки това, за да пропуснем тази стъпка, все още трябва ръчно да създадем резервното копие на базата данни и да го запишем на резервно устройство, достъпно от тестовия сървър.
Репликирайте задачата за архивиране на базата данни, като изпълните следния 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
Проверка на архивиране на базата данни
Проверете архива на базата данни, като отидете до папката, където току-що създадохме архива и прегледайте архивния файл:
Свържете се с друг екземпляр на SQL
Сега нека се свържем с друг екземпляр на SQL, за да емулираме тестов сървър. Първото нещо, което трябва да проверите, е дали SQL агентът работи или не.
Стартирайте SQL агент (ако не работи)
Щракнете с десния бутон върху SQL Server Agent и щракнете върху Старт както е показано по-долу:
Създайте нова работа
След това щракнете с десния бутон върху Работа , щракнете върху Нова работа... и след това въведете името на заданието като „Тестово възстановяване на базата данни ”:
След това изберете Стъпки в лявото навигационно меню щракнете върху Ново , и след това въведете „Тестово възстановяване на базата данни ” като име на стъпката:
Въведете следния T-SQL скрипт в полето за въвеждане на командата, след като се уверите, че типът T-SQL е избран в съответния падащ списък.
-- 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
Моля, обърнете внимание, че пътят C:\Program Files\Microsoft SQL Server\MSSQL12.SQLNAME\MSSQL\DATA\UniversityV7_Data.mdf е предоставен в този скрипт е само за демонстрационни цели. Y трябва да замените това с действително път на вашия тестов екземпляр на SQL сървър.
Накрая щракнете върху OK.
Планирайте изпълнението на заданието за 2 минути
Щракнете с десния бутон върху Тестово възстановяване на базата данни работа под Работни места и щракнете върху Свойства:
Щракнете върху Ново , въведете „На всеки 2 минути (тестване) “ и задайте графика да се изпълнява след две минути:
След няколко минути се свържете с тестовия сървър и разгънете Бази данни възел, за да видите, че UniversityV7 базата данни е възстановена успешно от автоматизирана задача (задача) на SQL Server.
Моля, не се колебайте да стартирате DBCC CheckDB, за да сте сигурни, че процесът на възстановяване на базата данни е наред.
Честито! Успешно автоматизирахте процеса на тестово възстановяване на базата данни.
Неща за правене
Сега, когато можете да автоматизирате архивиране на база данни и тестово възстановяване, моля, опитайте да изпълните следните задачи, за да подобрите уменията си:
- Добавете DBCC CheckDB като част от процеса на автоматизирано възстановяване на база данни
- Автоматизирайте архивирането на един сървър и възстановяването му на друг тестов сървър
- Автоматизирайте задачите за архивиране на база данни и тестово възстановяване за множество бази данни