1. Giới thiệu
Câu lệnh BACKUP DATABASE trong SQL Server được sử dụng để sao lưu toàn bộ cơ sở dữ liệu hoặc một phần cơ sở dữ liệu. Sao lưu dữ liệu là một quy trình cực kỳ quan trọng giúp bảo vệ dữ liệu trước những sự cố như hỏng hóc phần cứng, lỗi phần mềm, hoặc thao tác sai. Bằng cách tạo bản sao lưu, bạn có thể dễ dàng khôi phục cơ sở dữ liệu về trạng thái trước đó nếu có sự cố xảy ra.
SQL Server cung cấp nhiều loại sao lưu khác nhau như sao lưu toàn bộ (full backup), sao lưu khác biệt (differential backup) và sao lưu nhật ký giao dịch (transaction log backup). Mỗi loại sao lưu phục vụ mục đích khác nhau và tùy thuộc vào chính sách bảo vệ dữ liệu của bạn.
2. Các loại sao lưu cơ sở dữ liệu trong SQL Server
- Full Backup (Sao lưu toàn bộ): Sao lưu toàn bộ cơ sở dữ liệu, bao gồm toàn bộ dữ liệu và cấu trúc của nó.
- Differential Backup (Sao lưu khác biệt): Sao lưu chỉ những thay đổi được thực hiện kể từ lần sao lưu toàn bộ cuối cùng.
- Transaction Log Backup (Sao lưu nhật ký giao dịch): Sao lưu các nhật ký giao dịch, giúp bạn khôi phục cơ sở dữ liệu đến một điểm cụ thể trong thời gian.
3. Cú pháp của BACKUP DATABASE
a. Sao lưu toàn bộ cơ sở dữ liệu
BACKUP DATABASE database_name
TO DISK = 'path_to_backup_file';database_name: Tên của cơ sở dữ liệu mà bạn muốn sao lưu.path_to_backup_file: Đường dẫn nơi bạn muốn lưu tệp sao lưu.
b. Sao lưu khác biệt
BACKUP DATABASE database_name
TO DISK = 'path_to_backup_file'
WITH DIFFERENTIAL;c. Sao lưu nhật ký giao dịch
BACKUP LOG database_name
TO DISK = 'path_to_log_backup_file';4. Ví dụ về BACKUP DATABASE
a. Sao lưu toàn bộ cơ sở dữ liệu trong SQL Server
Ví dụ 1: Sao lưu cơ sở dữ liệu SalesDB vào ổ đĩa D:
BACKUP DATABASE SalesDB
TO DISK = 'D:\Backup\SalesDB_Full.bak';Câu lệnh này sẽ sao lưu toàn bộ cơ sở dữ liệu SalesDB và lưu vào tệp SalesDB_Full.bak trên ổ đĩa D:.
b. Sao lưu khác biệt trong SQL Server
Ví dụ 2: Sao lưu khác biệt cơ sở dữ liệu SalesDB
BACKUP DATABASE SalesDB
TO DISK = 'D:\Backup\SalesDB_Diff.bak'
WITH DIFFERENTIAL;Câu lệnh này sẽ tạo một bản sao lưu khác biệt của cơ sở dữ liệu SalesDB, chỉ lưu các thay đổi kể từ lần sao lưu toàn bộ cuối cùng.
c. Sao lưu nhật ký giao dịch trong SQL Server
Ví dụ 3: Sao lưu nhật ký giao dịch của cơ sở dữ liệu SalesDB
BACKUP LOG SalesDB
TO DISK = 'D:\Backup\SalesDB_Log.bak';Câu lệnh này sao lưu các nhật ký giao dịch của cơ sở dữ liệu SalesDB để giúp khôi phục dữ liệu đến một thời điểm cụ thể.
5. Các tùy chọn nâng cao trong BACKUP DATABASE
SQL Server cung cấp một số tùy chọn bổ sung để kiểm soát quá trình sao lưu cơ sở dữ liệu.
a. Nén tệp sao lưu
Bạn có thể sử dụng tùy chọn WITH COMPRESSION để nén tệp sao lưu, giúp tiết kiệm không gian lưu trữ.
Ví dụ 4: Sao lưu toàn bộ cơ sở dữ liệu với tệp nén
BACKUP DATABASE SalesDB
TO DISK = 'D:\Backup\SalesDB_Compressed.bak'
WITH COMPRESSION;b. Ghi đè tệp sao lưu hiện có
Sử dụng tùy chọn WITH INIT để ghi đè tệp sao lưu hiện có thay vì thêm vào cuối tệp (append).
Ví dụ 5: Ghi đè tệp sao lưu hiện có
BACKUP DATABASE SalesDB
TO DISK = 'D:\Backup\SalesDB_Full.bak'
WITH INIT;c. Kiểm tra tính toàn vẹn của sao lưu
Sử dụng WITH CHECKSUM để SQL Server kiểm tra tính toàn vẹn của bản sao lưu sau khi hoàn tất.
Ví dụ 6: Sao lưu với kiểm tra tính toàn vẹn
BACKUP DATABASE SalesDB
TO DISK = 'D:\Backup\SalesDB_Checksum.bak'
WITH CHECKSUM;6. Khôi phục cơ sở dữ liệu từ tệp sao lưu
Để khôi phục một cơ sở dữ liệu từ tệp sao lưu, bạn sử dụng câu lệnh RESTORE DATABASE. Đây là bước quan trọng để khôi phục dữ liệu khi xảy ra sự cố.
Ví dụ 7: Khôi phục cơ sở dữ liệu SalesDB từ tệp sao lưu
RESTORE DATABASE SalesDB
FROM DISK = 'D:\Backup\SalesDB_Full.bak';Câu lệnh này sẽ khôi phục toàn bộ cơ sở dữ liệu từ bản sao lưu đầy đủ.
Ví dụ 8: Khôi phục cơ sở dữ liệu với tệp sao lưu khác biệt
Để khôi phục một cơ sở dữ liệu từ bản sao lưu khác biệt, bạn cần khôi phục bản sao lưu đầy đủ trước, sau đó khôi phục bản sao lưu khác biệt.
-- Khôi phục bản sao lưu toàn bộ trước
RESTORE DATABASE SalesDB
FROM DISK = 'D:\Backup\SalesDB_Full.bak'
WITH NORECOVERY;
-- Khôi phục bản sao lưu khác biệt
RESTORE DATABASE SalesDB
FROM DISK = 'D:\Backup\SalesDB_Diff.bak'
WITH RECOVERY;Ví dụ 9: Khôi phục cơ sở dữ liệu từ nhật ký giao dịch
RESTORE LOG SalesDB
FROM DISK = 'D:\Backup\SalesDB_Log.bak'
WITH RECOVERY;7. Lưu ý khi sao lưu cơ sở dữ liệu
a. Sao lưu thường xuyên
Bạn nên thực hiện sao lưu cơ sở dữ liệu thường xuyên để đảm bảo rằng dữ liệu luôn được bảo vệ. Đặc biệt đối với các cơ sở dữ liệu quan trọng, việc sao lưu hàng ngày hoặc theo giờ là cần thiết.
b. Kiểm tra tính toàn vẹn của bản sao lưu
Sau khi sao lưu, hãy sử dụng tùy chọn WITH CHECKSUM để đảm bảo rằng tệp sao lưu không bị hỏng. Điều này đảm bảo rằng tệp sao lưu có thể được sử dụng để khôi phục thành công khi cần thiết.
c. Quản lý không gian lưu trữ
Sao lưu thường xuyên có thể chiếm rất nhiều không gian lưu trữ, vì vậy bạn cần cân nhắc việc nén tệp sao lưu hoặc quản lý chu kỳ sao lưu (lưu trữ bản sao lưu cũ trong một khoảng thời gian nhất định trước khi xóa).
Kết luận
Câu lệnh BACKUP DATABASE trong SQL Server giúp bảo vệ dữ liệu của bạn bằng cách tạo các bản sao lưu để khôi phục khi cần thiết. Có nhiều loại sao lưu khác nhau như sao lưu toàn bộ, sao lưu khác biệt, và sao lưu nhật ký giao dịch, mỗi loại phục vụ các mục đích khác nhau. Bằng cách sử dụng các tùy chọn nâng cao như nén, ghi đè, và kiểm tra tính toàn vẹn, bạn có thể tối ưu hóa quá trình sao lưu và bảo mật dữ liệu một cách hiệu quả.
Hãy thử thực hiện các lệnh sao lưu và khôi phục trên hệ thống MySQL Server (demo) của bạn để làm quen với quy trình này!









