Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Tự động hóa khôi phục kiểm tra cơ sở dữ liệu trong SQL Server

Bài viết này nói về việc tự động hóa quy trình khôi phục cơ sở dữ liệu thường được thực hiện theo cách thủ công bởi DBA hoặc nhóm cơ sở hạ tầng chịu trách nhiệm quản lý (các) máy chủ cơ sở dữ liệu và (các) cơ sở dữ liệu.

Bài viết này cũng nhấn mạnh tầm quan trọng của việc tự động hóa các tác vụ quản trị cơ sở dữ liệu như sao lưu và khôi phục cơ sở dữ liệu để đảm bảo rằng (các) cơ sở dữ liệu sản xuất vẫn còn nguyên vẹn tính nhất quán và độ tin cậy.

Ngoài ra, sẽ có một số mẹo về cách lập kế hoạch và thực hiện tự động hóa nhiệm vụ khôi phục cơ sở dữ liệu trong một tình huống thực tế.

Khôi phục kiểm tra cơ sở dữ liệu và CheckDB (Phối cảnh DBA)

Tầm quan trọng của việc sao lưu và phục hồi cơ sở dữ liệu SQL Server theo quan điểm của người quản trị cơ sở dữ liệu hoặc nhóm cơ sở hạ tầng (chịu trách nhiệm quản lý máy chủ cơ sở dữ liệu) là nhiều hơn là chỉ chạy sao lưu và phục hồi vì đây là một trong những cách để đảm bảo rằng chiến lược khắc phục thảm họa (DR) đã được áp dụng tốt.

Điều này cũng có nghĩa là các hoạt động sao lưu và khôi phục cơ sở dữ liệu sẽ hiệu quả hơn nếu chúng được hỗ trợ bởi bất kỳ cơ chế kiểm tra tính nhất quán nào khác.

Sử dụng Lệnh DBCC CHECKDB

SQL Server đưa ra một lệnh hữu ích để kiểm tra tính nhất quán của cơ sở dữ liệu.

Theo tài liệu của Microsoft, lệnh DBCC CHECKDB được sử dụng để kiểm tra tính toàn vẹn logic và vật lý của tất cả các đối tượng trong cơ sở dữ liệu bằng cách thực hiện một số thao tác khác nhau.

Việc thực thi thành công lệnh mà không có bất kỳ lỗi nào cho thấy rằng cơ sở dữ liệu đang ở trạng thái ổn định và nhất quán.

Lệnh này có thể được thực hiện đơn giản như sau với điều kiện là cơ sở dữ liệu mong muốn được kết nối:

Kịch bản khôi phục kiểm tra cơ sở dữ liệu

Hãy xem xét một tình huống trong thế giới thực, trong đó DBA luôn tạo các bản sao lưu của cơ sở dữ liệu sản xuất.

Tuy nhiên, việc tạo bản sao lưu không đảm bảo rằng quá trình khôi phục thảm họa cơ sở dữ liệu còn được gọi là DR được thực hiện trừ khi cơ sở dữ liệu được khôi phục thành công.

Vì vậy, cơ sở dữ liệu phải được khôi phục từ bản sao lưu để đảm bảo rằng trong trường hợp có bất kỳ sự cố cơ sở dữ liệu nào, dữ liệu có thể được khôi phục thành công.

Bản sao lưu cơ sở dữ liệu sản xuất không bao giờ được khôi phục trên máy chủ sản xuất cho mục đích thử nghiệm.

Vì vậy, làm thế nào để một DBA đảm bảo rằng tất cả các bản sao lưu đều tốt? Chỉ cần khôi phục bản sao lưu mới nhất của cơ sở dữ liệu trên một máy chủ thử nghiệm khác.

Sau khi sao lưu cơ sở dữ liệu đã được khôi phục thành công, lệnh DBCC CHECKDB sẽ được thực thi để đảm bảo rằng cơ sở dữ liệu được khôi phục là nhất quán và ổn định.

Đây là một công việc quan trọng nhưng tốn nhiều thời gian và cũng đòi hỏi nhiều sự cẩn thận. Tốt nhất, nó nên được tự động hóa - trừ khi các quy tắc và quy định tổ chức của bạn hạn chế việc tự động hóa nhiệm vụ cụ thể này.

Tự động khôi phục kiểm tra cơ sở dữ liệu

Bây giờ chúng ta hãy xem cách tự động hóa quá trình khôi phục kiểm tra cơ sở dữ liệu một cách chi tiết.

Khôi phục kiểm tra cơ sở dữ liệu lập kế hoạch

Điều rất quan trọng là lập kế hoạch các bước để bạn có thể tự động hóa chúng một cách dễ dàng. Việc lập kế hoạch cũng yêu cầu bạn đáp ứng các điều kiện tiên quyết của tự động hóa tác vụ SQL.

Điều kiện tiên quyết

Hãy đảm bảo rằng các điều kiện tiên quyết sau được đáp ứng trước khi bạn tự động hóa các tác vụ khôi phục cơ sở dữ liệu trong máy chủ SQL bằng cách truyền thống:

  1. Sự tự động hóa của bạn không xung đột với các quy tắc và quy định của tổ chức
  2. Bạn được phép tự động hóa tác vụ này
  3. Tác nhân SQL đang chạy
  4. Máy chủ cơ sở dữ liệu mà quá trình khôi phục sẽ diễn ra trên đó phải được thiết lập và chạy
  5. Quá trình sao lưu cơ sở dữ liệu đã được tự động hóa và bản sao lưu được gửi đến ổ đĩa sao lưu
  6. Máy chủ thử nghiệm có thể truy cập được ổ đĩa sao lưu

Tóm tắt các bước

  1. Sao lưu cơ sở dữ liệu chạy trên máy chủ
  2. Bản sao lưu này được lưu vào một ổ đĩa sao lưu mà một máy chủ thử nghiệm khác có thể truy cập được
  3. Công việc SQL đã được lên lịch trên máy chủ thử nghiệm để chạy khôi phục bản sao lưu
  4. Công việc SQL sau khi chạy có thể được theo sau bằng cách chạy DBCC CheckDB theo cách thủ công trên cơ sở dữ liệu được khôi phục, nhưng cũng có thể được tự động hóa

Bài viết tham khảo

Vui lòng tham khảo bài viết Cơ bản về SQL Server Tasks Automation để tự động hóa tác vụ sao lưu cơ sở dữ liệu vì bài viết này giả định rằng tác vụ sao lưu cơ sở dữ liệu đã được tự động hóa và nó lưu bản sao lưu trên ổ đĩa sao lưu mà máy chủ thử nghiệm có thể truy cập được.

Sao chép Nhiệm vụ Sao lưu Cơ sở dữ liệu

Hãy giả sử rằng tác vụ sao lưu đã được chạy và một bản sao lưu đã được tạo trên ổ đĩa sao lưu.

Để sao chép tác vụ này, chúng tôi sẽ tạo một cơ sở dữ liệu mẫu có tên là UniversityV7 như sau:

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

Chạy tập lệnh này sẽ tạo và điền vào cơ sở dữ liệu mẫu.

Kiểm tra cơ sở dữ liệu bằng cách chạy tập lệnh sau:

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

Đầu ra sẽ như sau:

Giả sử rằng tác vụ sao lưu là tự động. Tuy nhiên, để bỏ qua bước này, chúng tôi vẫn phải tạo bản sao lưu cơ sở dữ liệu theo cách thủ công và lưu nó vào ổ sao lưu mà máy chủ thử nghiệm có thể truy cập.

Sao chép tác vụ sao lưu cơ sở dữ liệu bằng cách chạy tập lệnh T-SQL sau:

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

Kiểm tra sao lưu cơ sở dữ liệu

Kiểm tra bản sao lưu cơ sở dữ liệu bằng cách điều hướng đến thư mục mà chúng tôi vừa tạo bản sao lưu và xem tệp sao lưu:

Kết nối với một phiên bản SQL khác

Bây giờ, hãy kết nối với một phiên bản SQL khác để mô phỏng một máy chủ thử nghiệm. Điều đầu tiên cần kiểm tra là liệu SQL Agent có đang chạy hay không.

Khởi động SQL Agent (nếu không chạy)

Nhấp chuột phải vào SQL Server Agent và nhấp vào Bắt đầu như hình dưới đây:

Tạo công việc mới

Tiếp theo, nhấp chuột phải vào Công việc , nhấp vào Công việc mới… và sau đó nhập tên công việc là “ Khôi phục Kiểm tra Cơ sở dữ liệu ”:

Tiếp theo, chọn Các bước trong menu điều hướng bên trái, nhấp vào Mới , và sau đó nhập “ Khôi phục kiểm tra cơ sở dữ liệu ”Làm tên bước:

Nhập tập lệnh T-SQL sau vào hộp nhập Lệnh sau khi đảm bảo rằng loại T-SQL được chọn trong danh sách thả xuống tương ứng.

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

Xin lưu ý rằng đường dẫn C:\ Program Files \ Microsoft SQL Server \ MSSQL12.SQLNAME \ MSSQL \ DATA \ UniversityV7_Data.mdf được cung cấp trong tập lệnh này chỉ dành cho mục đích demo. Y ou phải thay thế cái này bằng cái thực tế đường dẫn của phiên bản máy chủ SQL thử nghiệm của bạn.

Cuối cùng, nhấp vào OK.

Lên lịch thực hiện Công việc sau 2 phút

Nhấp chuột phải vào Khôi phục Kiểm tra Cơ sở dữ liệu công việc theo Việc làm và nhấp vào Thuộc tính:

Nhấp vào Mới , nhập “ 2 phút một lần (thử nghiệm) ”, Và đặt lịch chạy sau hai phút:

Sau một vài phút, hãy kết nối với máy chủ thử nghiệm và mở rộng Cơ sở dữ liệu để thấy rằng UniversityV7 cơ sở dữ liệu đã được khôi phục thành công bằng Tác vụ SQL Server (Công việc) tự động.

Vui lòng chạy DBCC CheckDB để đảm bảo rằng quá trình khôi phục cơ sở dữ liệu đều ổn.

Xin chúc mừng! Bạn đã tự động hóa thành công quá trình khôi phục kiểm tra cơ sở dữ liệu.

Việc cần làm

Bây giờ bạn có thể tự động sao lưu cơ sở dữ liệu và khôi phục thử nghiệm, hãy thử hoàn thành các tác vụ sau để cải thiện kỹ năng của bạn:

  1. Thêm DBCC CheckDB như một phần của quy trình khôi phục cơ sở dữ liệu tự động
  2. Tự động sao lưu trên một máy chủ và khôi phục nó trên một máy chủ thử nghiệm khác
  3. Tự động hóa các nhiệm vụ khôi phục kiểm tra và sao lưu cơ sở dữ liệu cho nhiều cơ sở dữ liệu


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Máy ảo Azure để sử dụng máy chủ SQL

  2. Bảo trì theo lịch trình của Cơ sở dữ liệu IS 24/7 trong MS SQL Server

  3. Hiểu Nhóm theo Mệnh đề trong SQL Server - Hướng dẫn SQL Server / TSQL Phần 130

  4. Cách giới hạn hàng trong bộ kết quả máy chủ SQL

  5. Cách sao lưu cơ sở dữ liệu SQL Server bằng T-SQL