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

SQL Server - Mệnh đề GROUP BY

SQL Server - Mệnh đề GROUP BY

Chức năng: gom nhóm các dòng dữ liệu theo tiêu chí gom nhóm đặt trong mệnh đề GROUP BY nhằm hỗ trợ và phục vụ các mục đích của câu truy vấn.

SQL Server - Lệnh INSERT

SQL Server - Lệnh INSERT

Chức năng: cho phép thêm một hoặc nhiều dòng dữ liệu vào bảng đã tạo sẵn trong cơ sở dữ liệu.

SQL Server - Lệnh UPDATE

SQL Server - Lệnh UPDATE

Chức năng: cho phép người dùng cập nhật giá trị các thuộc tính trên các dòng của bảng dữ liệu có sẵn trong cơ sở dữ liệu.

T SQL - Cấu trúc WHILE

T SQL - Cấu trúc WHILE

Câu lệnh WHILE là một cấu trúc lặp sẽ thực hiện các thao tác lặp cho đến khi biểu thức điều kiện trong câu lệnh WHILE có giá trị Fasle. Biểu thức điều kiện lặp lại có thể là một câu lệnh SELECT

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

Giới thiệu SQL Server

Giới thiệu SQL Server

Giới thiệu chung SQL (Structured Query Language, đọc là "sequel") là tập lệnh truy xuất trên cơ dữ liệu (CSDL) quan hệ. Ngôn ngữ SQL, được IBM sử dụng đầu tiên trong hệ quản trị CSDL Sytem R vào...

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

ManhDanBlogs