Mục đích của việc sao lưu và phục hồi dữ liệu

Sao lưu và phục hồi dữ liệu là vấn đề rất quan trọng khi quản trị cơ sở dữ liệu. Hoạt động này đảm bảo cho dữ liệu khi xảy ra sự cố, ta có thể khôi phục lại trạng thái của cơ sở dữ liệu trước khi xảy ra sự cố. Công việc này phải dựa vào có chế sao lưu (backup) và khôi phục (restore) của hệ cơ sở dữ liệu và để thực hiện tốt công việc này thì người quản trị cơ sở dữ liệu phải có kịch bản sao lưu và khôi phục cơ sở dữ liệu cho hệ thống một cách cẩn thận và chi tiết.

Các cơ chế sao lưu dữ liệu

SQL Server cung cấp 3 cơ chế sao lưu dữ liệu như sau:

+ Full Backup: là thực hiện backup toàn bộ dữ liệu tại thời điểm thực hiện thao tác backup.

+ Differential Backup: là thực hiện backup các dữ liệu mới được cập nhật kể từ lần thực hiện Full Backup trước đó.

+ Transaction Log Backup: là thực hiện backup các log record hiện có trong log file. Cơ chế sao lưu này sẽ sao lưu các hành động chứ không sao lưu dữ liệu. Đồng thời cơ chế nyaf cũng tiến hành ghi đè các log record đã được backup, còn được gọi là thao tác Log Truncation, nhờ vậy vùng nhớ các log file được giải phóng để ghi nhạn các log record mới. Transaction log backup chỉ sao các log record kể từ lần Transaction log backup trước đó. Khi thấy log file quá lớn, rất có khả năng là chúng ta chưa từng thực hiện Transaction log backup nào.

Kịch bản sao lưu dữ liệu

Cách để giảm thiểu mất mát dữu liệu khi gặp sự cố hệ thống là tăng tần suất backup dữ liệu. Tuy nhiên với một database có dung lượng lớn và được cập nhật liên tục, thì việc backup bằng Full Backup với một tần suất cao như vậy thì là một điều không khả thi, vì cơ chế này sẽ sử dụng rất nhiều tài nguyên hệ thống. Nhờ có Differential Backup Transaction Log Backup, chúng ta có thể lập ra một phương án sao lưu dữ liệu thích hợp, dảm bảo dữ liệu được backup thường xuyên hơn mà không chiếm nhiều tài nguyên của hệ thống.

Ví dụ, một kịch bản sao lưu và phụ hồi dữ liệu tham khảo như sau:

+ Full backup: thực hiện một lần mỗi ngày vào 2h sáng.

+ Differential Backup: thực hiện vào các thời điểm 6h, 10h, 14h, 18h, 22h.

+ Transaction Log Backup: thực hiện 15p một lần vào các thời điểm 5p, 20p, 35p, 50p của mỗi giờ (4 lần/ giờ).

Giả sử Database bị hỏng vào thời điểm 10h55p, ta cần khôi phục database theo trình tự sau:

Bước 1: Khôi phục từ bản Full Backup gần thời điểm có sự cố xảy ra (bản backup lúc 2h sáng).

Bước 2: Khôi phục từ bản Differential Backup gần với thời điểm có sự cố xảy ra (bản backup lúc 10h).

Bước 3: Khôi phục tất cả Transaction Log Backup kể từ sau lần Differential Backup gần nhất, lần lượt theo trình tự thời gian. Đó là các bản tại các thời điểm 10h5p, 10h20p, 10h35, 10h50p.

Bước 1 và 2 sẽ giúp chúng ta khôi phục được database trở về thời điểm lúc 10h. Còn bước 3 sẽ giúp chúng ta khôi phục database vào thời điểm lúc 10h50, tuy nhiên các thay đổi diễn ra trong vòng 5p sao đó tức là dữ liệu 10h50p đến 10h55p sẽ bị mất.

Sao lưu dữ liệu

Cú pháp:

BACKUP DATABASE DATABASE_NAME
TO DISK = 'DUONG_DAN_FILE'
[WITH DIFFERENTIAL | THAM_SO];

Ví dụ 1: Hãy viết lệnh thực hiện công việc sao lưu toàn phần cơ sở dữ liệu tên là QLDEAN.

BACKUP DATABASE QLDEAN
TO DISK = 'D:\QLDEAN.BAK'
WITH NAME = 'QLDEAN BACKUP',
STATS = 10

Ví dụ 2: Hãy viết lệnh thực hiện sao lưu một phần cơ sở dữ liệu tên là QLDEAN

BACKUP DATABASE QLDEAN
TO DISK = 'D:\QLDEAN.BAK'
WITH DIFFERENTIAL, NAME = 'QLDEAN BACKUP',
STATS = 10

Phục hồi dữ liệu

Cú pháp:

RESTORE DATABASE NEW_DATABASE_NAME
FROM DISK = 'DUONG_DAN_FILE'
[WITH THAM_SO]

Ví dụ 1: Phục hồi từ tập tin sao lưu 'QLDEAN.BAK' thành database có tên là 'NEWQLDEAN' (chưa chấm dứt phục hồi).

RESTORE DATABASE NEWQLDEAN
FROM DISK = 'D:\QLDEAN.BAK'
WITH FILE = 1, NORECOVERY,
STATS = 10

Ví dụ 2: Phục hồi từ tập tin sao lưu 'QLDEAN.BAK' thành database có tên là 'NEWQLDEAN' (chấm dứt phục hồi).

RESTORE DATABASE NEWQLDEAN
FROM DISK = 'D:\QLDEAN.BAK'
WITH FILE = 1, RECOVERY,
STATS = 10

CÓ THỂ BẠN QUAN TÂM

SQL Server - Stored Procedure

SQL Server - Stored Procedure

Khái niệm Stored Procedure - SP (thủ tục) là một tập các lệnh T -SQL và một số cấu trúc điều khiển, được lưu với một tên và được thực thi như một đơn vị công việc (Single unit of work) . Một thủ tục...

Lập trình T SQL

Lập trình T SQL

T-SQL (Transact SQL) là ngôn ngữ lập trình cơ sở dữ liệu thủ tục độc quyền của Microsoft dành cho SQL Server. Chúng cũng được sử dụng để viết các thủ tục được lưu trữ, là một đoạn mã nằm trên máy chủ...

SQL Server - User Defined Function

SQL Server - User Defined Function

Khái niệm User Defined Function là những hàm do người dùng tự định nghĩa để đáp ứng một mục tiêu nào đó. Một số hạn chế so với thủ tục là các tham số truyền vào không được mang thuộc tính OUTPUT, ng...

T SQL - Cấu trúc IF ... ELSE ...

T SQL - Cấu trúc IF ... ELSE ...

Câu lệnh IF ... ELSE ... Là một cấu trúc điều kiện, cho phép chúng ta thực hiện hoặc bỏ qua một hay nhiều lệnh dựa trên điều kiện đã chỉ định.

T SQL - Cấu trúc CASE

T SQL - Cấu trúc CASE

Biểu thức CASE là một biểu thức điều kiện được áp dụng bên trong một biểu thức khác. CASE trả về các giá trị khác nhau tùy thuộc vào điều kiện.

SQL Server - Mệnh đề ORDER BY

SQL Server - Mệnh đề ORDER BY

Chức năng: sắp xếp theo thứ tự tăng dần hoặc giảm dần các dòng dữ liệu trong quan hệ, kết quả theo tiêu chí sắp xếp.

Cài Đặt SQL Server 2019

Cài Đặt SQL Server 2019

Microsoft SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ được phát triển bởi Microsoft. Là một máy chủ cơ sở dữ liệu, nó là một sản phẩm phần mềm có chức năng chính là lưu trữ và truy xuất dữ liệ...

SQL Server - Constraints

SQL Server - Constraints

Trong một CSDL, luôn luôn tồn tại rất nhiều mối liên hệ ảnh hưởng qua lại lẫn nhau giữa các thuộc tính của một quan hệ, giữa các bộ giá trị trong một quan hệ và giữa các thuộc tính của các bộ giá trị...

SQL Server - Lệnh DELETE

SQL Server - Lệnh DELETE

Chức năng: cho phép người dùng xóa một hoặc nhiều dòng dữ liệu trên bảng dữ liệu đã có sẵn trong cơ sở dữ liệu.

ManhDanBlogs