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 - Mệnh đề WHERE

SQL Server - Mệnh đề WHERE

Chức năng : Rút trích các dòng dữ liệu từ các quan hệ tham gia truy vấn thỏa mãn điều kiện trong mệnh đề WHERE. Các biểu thức trong mệnh đề WHERE tương ứng với các điều kiện của phép chọn trong đại...

SQL Server - Truy Vấn Lồng

SQL Server - Truy Vấn Lồng

Truy vấn lồng là những câu lệnh mà trong thành phần WHERE có chứa thêm một câu lệnh SELECT khác nữa. Câu lệnh này thường gặp khi dữ liệu cần thiết phải duyệt qua nhiều lần. Đây là một trong những...

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

SQL Server - Table

Trong cơ sở dữ liệu, để tạo và quản trị các bảng dữ liệu, người dùng cần phải trả lời các câu hỏi sau: + Bảng dùng để lưu trữ những thông tin gì? Nên đặt tên bảng mang tính chất gợi nhớ tương ứng v...

SQL Server - Mệnh đề SELECT

SQL Server - Mệnh đề SELECT

Chức năng: rút trích một vài thông tin, một vài cột từ các quan hệ tham gia câu truy vấn. Câu lệnh SELECT tương ứng với chức năng của phép tham chiếu trong đại số quan hệ.

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

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

SQL Server - Mệnh đề HAVING

SQL Server - Mệnh đề HAVING

Chức năng: xuất ra kết quả là các dữ liệu thỏa mãn các điều kiện theo từng nhóm quy định trong GROUP BY.

ManhDanBlogs