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

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

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.

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

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

SQL Server - Database

SQL Server - Database

Tạo cơ sở dữ liệu ở màn hình Object Explorer Bước 1 : Click phải chuột, chọn Database, chọn New Database... Bước 2 : Khai báo thông tin cho Database cần tạo Trong đó : + Database...

ManhDanBlogs