Hotline: 0919 365 363; Email: daotao@r2s.edu.vn

Sao lưu và phục hồi dữ liệu trong SQL Server

Sao lưu và phục hồi dữ liệu trong SQL Server

Kiến thức hữu ích

Sao lưu và phục hồi dữ liệu trong SQL Server

Trong SQL Server, sao lưu và phục hồi dữ liệu là quá trình quan trọng để bảo vệ dữ liệu của bạn khỏi mất mát hoặc hỏng hóc. 

Bằng cách sao lưu và phục hồi dữ liệu, bạn có thể khôi phục lại dữ liệu trong trường hợp xảy ra sự cố như lỗi phần cứng, lỗi phần mềm, hoặc xóa dữ liệu một cách vô tình.Và để tìm hiểu rõ hơn, hãy cùng theo dõi bài viết dưới đây của R2S nhé!

Sao lưu và phục hồi dữ liệu trong SQL Server là gì?

Sao lưu và phục hồi dữ liệu trong SQL Server là một trong những thao tác quan trọng mà người quản trị cơ sở dữ liệu phải thực hiện.

Nếu thao tác sao lưu (Backup database) được thực hiện để lưu trữ dữ liệu và được thực hiện thường xuyên, thì thao tác phục hồi dữ liệu (Restore database) chỉ được thực hiện khi máy chủ gặp sự cố như hư ổ cứng hoặc dữ liệu bị mất do người dùng vô tình hoặc cố ý xóa.

Ngoài ra, thao tác phục hồi dữ liệu cũng được thực hiện để sao chép cơ sở dữ liệu từ máy chủ này sang máy chủ khác.

Lưu ý: Thao tác phục hồi dữ liệu chỉ nên được thực hiện khi cần thiết và tuân thủ các quy trình và quy định liên quan đến việc sao lưu và phục hồi dữ liệu trong SQL Server.

Sao lưu và phục hồi dữ liệu trong sql server là gì?
Sao lưu và phục hồi dữ liệu trong sql server là gì?

Các loại sao lưu dữ liệu

Dưới đây là những loại sao lưu dữ liệu mà bạn nên biết:

Loại 1: Full backup

Loại backup này sẽ sao lưu dữ liệu đầy đủ nhất, do đó máy chủ sẽ mất nhiều thời gian để thực hiện nếu cơ sở dữ liệu lớn.

Cú pháp

backup database Tên_Cơ_Sở_Dữ_Liệu to disk = 'Đường_dẫn\Tên_file.bak'

Ví dụ như câu lệnh full backup cơ sở dữ liệu QuanLyBanHang và lưu vào “d:\bk” (Lưu ý chúng ta phải tạo thư mục bk trong ổ đĩa D trước khi thực thi câu lệnh sau)

backup database QuanLyBanHang to disk = 'd:\bk\QLBH.bak'

Thực hiện full backup bằng giao diện sẽ như sau:

Các loại sao lưu dữ liệu - Sao lưu và phục hồi dữ liệu trong sql server
Các loại sao lưu dữ liệu

Chọn full backup, tên tập tin

Chọn full backup, tên tập tin - Sao lưu và phục hồi dữ liệu trong sql server
Chọn full backup, tên tập tin

Loại 2: Different backup

Backup những dữ liệu phát sinh tính từ lần backup full gần nhất. Như vậy trước khi chúng ta thực hiện different backup thì full backup phải được thực hiện trước. Chính vì vậy, khi chúng ta sử dụng loại backup này sẽ tiết kiệm được thời gian backup dữ liệu.

Cú pháp như sau:

backup database Tên_Cơ_Sở_Dữ_Liệu to disk = 'Đường_dẫn\Tên_File.bak' with differential

Ví dụ

backup database QuanLyBanHang to disk = 'D:\sql\QLBH_Diff.bak' with differential

Thực hiện different backup bằng giao diện như sau

Different backup
Different backup

Loại 3: Log backup

Backup dữ liệu là loại sao lưu sử dụng tập tin log và log backup được sử dụng để backup dữ liệu tại thời điểm cụ thể, ví dụ như mỗi giờ trong ngày.

Cú pháp:

backup log Tên_Cơ_Sở_Dữ_Liệu to disk = 'Đường_dẫn\Tên_File.trn'

Ví dụ

backup log QuanLyBanHang to disk = 'D:\sql\QLBH.trn'

Thực hiện log backup bằng giao diện như sau:

Different backup
Different backup

Sao lưu và phục hồi dữ liệu trong sql server – Kịch bản backup

Kịch bản sao lưu này được thực hiện trên cơ sở dữ liệu Quản Lý Bán Hàng. Thực hiện sao lưu toàn bộ vào 3h sáng Chủ Nhật (1 lần/ngày). Thực hiện sao lưu khác biệt vào 2h sáng thứ Tư (1 lần/ngày). Thực hiện sao lưu ghi nhật ký vào các thời điểm 2h10′, 2h20′, 2h40′ và 2h50′ (4 lần/ngày sau sao lưu khác biệt).

Giả sử máy chủ bị hỏng ổ cứng vào 2h55′ thứ Tư. Hỏi kịch bản phục hồi và tình trạng dữ liệu sau khi khôi phục? Câu trả lời ở ngay dưới đây.

Đầu tiên, chúng ta sẽ thực hiện khôi phục dữ liệu về thời điểm 3h sáng Chủ Nhật bằng bản sao lưu toàn bộ. Tiếp theo, chúng ta sẽ khôi phục dữ liệu về thời điểm 2h sáng thứ Tư bằng bản sao lưu khác biệt.

Cuối cùng, sử dụng bản sao lưu ghi nhật ký vào thời điểm 2h50′ của thứ Tư để đưa dữ liệu về thời điểm 2h50′. Như vậy, dữ liệu chỉ được khôi phục trở lại vào thời điểm 2h50′ thứ Tư và chúng ta sẽ mất dữ liệu từ 2h51′ trở đi.

Sao lưu và phục hồi dữ liệu trong sql server – Phục hồi dữ liệu

Phục hồi dữ liệu từ bản full và different backup

restore database Tên_Cơ_Sở_Dữ_Liệu from disk = 'Đường dẫn\Tên_File.bak' [With NoRecovery]

Phục hồi dữ liệu từ bản log backup

restore log Tên_Cơ_Sở_Dữ_Liệu from disk = 'Đường dẫn\Tên_File.trn' [With NoRecovery]

Lưu ý:

  • Để thực hiện việc khôi phục dữ liệu từ nhiều bản sao lưu, chúng ta cần sử dụng từ khóa With NoRecovery trong các câu lệnh phục hồi, trừ trường hợp cuối cùng.
  • Ngoài ra, chúng ta cũng có thể sử dụng từ khóa With Standby thay cho With NoRecovery để xem dữ liệu đã được khôi phục sau mỗi lần thực thi câu lệnh phục hồi.

Sao lưu và phục hồi dữ liệu trong sql server – Ví dụ mẫu

Sao lưu dữ liệu của cơ sở dữ liệu QuanLyBanHang – Sao lưu và phục hồi dữ liệu trong sql server

Thực hiện bước full backup

backup database QuanLyBanHang to disk = 'd:\bk\QLBH.bak'

Thêm dữ liệu vào bảng VATTU

Insert into VATTU values ('vt01', N'Máy lạnh Panasonic', N'Cái', 100)

Thực hiện bước different backup

backup database QuanLyBanHang to disk = 'D:\bk\QLBH_Diff.bak' with differential

Tiếp tục thêm dữ liệu cho bảng VATTU

Insert into VATTU values ('vt02', N'Tủ lạnh Panasonic', N'Cái', 100)

Thực hiện bước log backup

backup log QuanLyBanHang to disk = 'D:\bk\QLBH.trn'

Phục hồi dữ liệu cho cơ sở dữ liệu QuanLyBanHang

Để giả lập máy chủ bị hỏng ổ cứng, ta có thể xóa cơ sở dữ liệu QuanLyBanHang và sau đó khôi phục lại dữ liệu. Lưu ý rằng câu lệnh khôi phục cuối cùng cần có tham số “With NoRecovery”.

–Khôi dữ liệu từ full backup

restore database QuanLyBanHang from disk = 'D:\bk\QLBH.bak' With NoRecovery

–Khôi phục dữ liệu từ different backup

restore database QuanLyBanHang from disk = 'D:\bk\QLBH_Diff.bak' With NoRecovery

–Khôi phục dữ liệu từ log backup

restore log QuanLyBanHang from disk = 'D:\bk\QLBH.trn'

Bài tập thực hành – Sao lưu và phục hồi dữ liệu trong sql server

Bài thực hành số 1: Phân quyền và sao lưu

Câu 1: Tạo bảng CSDL QuanLyPhongMay

File typeSizeMax sizeFile growth
Data 110 MB1000 MB10 MB
Data 210 MB1000 MB10 MB
Log 130 MB2 GB30 MB
Log 230 MB2000 MB30 MB

Câu 2: Tạo các bảng thuộc CSDL QuanLyPhongMay chi tiết

Bảng PhongMay

Tên cộtKiểu dữ liệuGhi chú
MaPhongvarchar(20)Khóa chính
GhiChunvarchar(100)

Bảng MayTinh

Tên cộtKiểu dữ liệuGhi chú
MaMayvarchar(20)Khóa chính
GhiChunvarchar(100)
MaPhongvarchar(20)Khóa ngoại

Bảng MonHoc

Tên cộtKiểu dữ liệuGhi chú
MaMonvarchar(20)Khóa chính
TenMonnvarchar(100)
SoGioint

Bảng DangKy

Tên cộtKiểu dữ liệuGhi chú
MaMonvarchar(20)Khóa chính
MaPhongvarchar(20)
NgayDKdatetime

Câu 3: Cấp quyền

3.1 Tạo login và user

Tên loginTên userTên role
TruongLVTruongLVPhongKT
AnLVAnLV

3.2 Phân quyền

Tên user/Tên nhómQuyền
PhongKTTạo database, tạo bảng
AnLVXem toàn bộ cơ sở dữ liệu, chỉ thêm dữ liệu trên bảng PhongMay và cho phép cấp lại quyền

Gợi ý

–Câu lệnh cấp quyền tạo cơ sở dữ liệu

grant alter any database to Tên_Login/Tên_Role

–Câu lệnh cấp quyền tạo bảng

grant create table to Tên_User/Tên_Role

Câu 4: Sao lưu và phục hồi cơ sở dữ liệu

4.1 Thực hiện full, differential và log backup cho cơ sở dữ liệu của QuanLyPhongMay

Lần 1: Thêm dữ liệu cho bảng MayTinh và thực hiện full backup như sau

MaMayGhiChuMaPhong
m01TH601

Lần 2: Thêm dữ liệu cho bảng MayTinh và thực hiện different backup

MaMayGhiChuMaPhong
m02TH602

Lần 3: Thêm dữ liệu cho bảng MayTinh và thực hiện log backup

MaMayGhiChuMaPhong
m03TH603

4.2 Giả lập máy chủ bị hư ổ cứng bằng cách xoá cơ sở dữ liệu QuanLyPhongMay, sau đó tiến hành khôi phục dữ liệu.

Bài thực hành số 2: Phân quyền và sao lưu

Câu 1: Cho phép tài khoản bk được phép thực hiện các công việc sau

STTCông việc được phép
1Tạo CSDL
2Tạo bảng
3Backup và restore

Gợi ý câu lệnh cấp quyền backup và restore

grant backup database to Tên_User/Tên_Role

Câu 2: Đăng nhập vào quyền của bk và thực hiện các công việc bên dưới

2.1 Tạo cơ sở dữ liệu tên QuanLyNhanVien

File typeSizeMax sizeFile growthPath
Data 110 MBKhông giới hạn10 MBC:\SQL
Data 210 MB1GB10 MBD:\SQL
Log30 MBKhông giới hạn30 MBC:\SQL

2.2 Tạo bảng

Bảng PhongBan

Tên cộtKiểu dữ liệuSố kí tựGhi chú
MaPhongvarchar20Khóa chính
TenPhongnvarchar100
DienThoaiint

Bảng NhanVien

Tên cộtKiểu dữ liệuSố kí tựGhi chú
MaNvvarchar20Khóa chính
TenNvnvarchar100
GioiTinhnvarchar3
NgaySinhdate
DiaChinvarchar200
MaPhongvarchar20Khóa ngoại

2.2 Thiết lập ràng buộc cho các bảng

2.3 Tạo database diagram

Câu 3: Thêm dữ liệu và backup

3.1 Thêm dữ liệu cho bảng NhanVien sau đó thực hiện sao lưu đầy đủ (full backup).

3.2 Thêm dữ liệu cho bảng NhanVien sau đó thực hiện sao lưu khác nhau (different backup).

3.3 Thêm dữ liệu cho bảng NhanVien sau đó thực hiện sao lưu log (lần 1).

3.4 Thêm dữ liệu cho bảng NhanVien sau đó thực hiện sao lưu log (lần 2, sử dụng lại tên file đã tạo ở lần 1).

Lưu ý: Thông tin này được trích dẫn từ các nguồn tìm kiếm và không cần liệt kê danh sách nguồn cuối bài.

Câu 4: Khôi phục dữ liệu

4.1 Xoá cơ sở dữ liệu QuanLyNhanVien

4.2 Khôi phục lại dữ liệu với tỳ chọn With Standby thay cho With NoRecovery

Kết luận

Trên đây là những kiến thức hữu ích về sao lưu và phục hồi dữ liệu trong sql server. Hãy ghi lại những cú pháp và  thực hiện nó thật chính xác trong những bài thực hành nhé!

Bài viết gốc được đăng tại: giasutinhoc.vn

Alert: You are not allowed to copy content or view source !!