Mục tiêu
Cung cấp hướng dẫn chi tiết cho việc sao lưu (backup) và khôi phục (restore) cơ sở dữ liệu SQL Server (on‑prem và Azure SQL) đáp ứng các yêu cầu RPO/RTO của dự án .NET Enterprise.
1. Kiểu sao lưu
| Kiểu | Thời gian thực hiện | Độ chi tiết | Khi nào dùng |
|---|---|---|---|
| Full Backup | 30‑60 phút (tùy kích thước) | Toàn bộ dữ liệu + log | Định kỳ hàng tuần hoặc khi có thay đổi lớn về schema |
| Differential Backup | 5‑15 phút | Chỉ các trang dữ liệu thay đổi kể từ backup full cuối cùng | Hàng ngày để giảm thời gian restore |
| Transaction Log Backup | 5‑10 phút (hoặc 5‑15 phút) | Ghi lại mọi giao dịch kể từ backup log cuối cùng | Liên tục, mỗi 15‑30 phút hoặc mỗi 5 phút cho môi trường có RPO < 5 phút |
2. Quy trình sao lưu (On‑Prem)
sql-- Full backup (đặt lịch vào cuối tuần)
BACKUP DATABASE [MyDb] TO DISK = N'\\backupserver\SQLBackups\MyDb_Full_20240404.bak' WITH INIT, COMPRESSION;
-- Differential backup (hàng ngày)
BACKUP DATABASE [MyDb] TO DISK = N'\\backupserver\SQLBackups\MyDb_Diff_20240404.bak' WITH DIFFERENTIAL, COMPRESSION;
-- Log backup (mỗi 15 phút)
BACKUP LOG [MyDb] TO DISK = N'\\backupserver\SQLBackups\MyDb_Log_20240404.trn' WITH COMPRESSION;
Lưu ý: Đặt Retention cho log backup ít nhất 30 ngày để hỗ trợ point‑in‑time restore.
3. Azure SQL Managed Instance / Azure SQL Database
- Automated Backups: Azure tự động tạo full backup hàng ngày, differential 12‑hour, và log backup mỗi 5‑10 phút.
- Long‑Term Retention (LTR): Cấu hình LTR để giữ backup tới 10 năm (đối với yêu cầu lưu trữ dữ liệu pháp lý).
- Restore:
Sử dụng point‑in‑time để khôi phục tới thời điểm cụ thể.bashaz sql db restore --dest-name MyDb_Restore --name MyDb --resource-group rg-wiki --server myserver --time "2024-04-04T12:30:00Z"
4. Kiểm tra phục hồi (Disaster Recovery Drill)
- Tạo sandbox database
MyDb_TestRestore. - Thực hiện
RESTORE DATABASE MyDb_TestRestore FROM DISK = ... WITH NORECOVERY;sau đóRESTORE LOG ... WITH RECOVERY;. - Kiểm tra tính toàn vẹn:
DBCC CHECKDB('MyDb_TestRestore'). - Lập lịch quarterly drill để đảm bảo quy trình hoạt động.
5. Các công cụ hỗ trợ
- SQLPackage (
sqlpackage /Action:Export) – xuất schema + dữ liệu sang .bacpac, dễ di chuyển lên Azure. - Azure Data Factory – sao chép backup từ on‑prem lên Azure Blob Storage để lưu trữ lâu dài.
- PowerShell –
Backup-SqlDatabasevàRestore-SqlDatabasetự động hoá.
6. Lưu ý bảo mật
- Mã hoá backup bằng Transparent Data Encryption (TDE) và Backup Encryption (
WITH ENCRYPTION). - Đặt Access Control cho thư mục backup (NTFS permissions) và Shared Access Signatures cho Blob.
- Đảm bảo immutability (policy immutable) cho backup lưu trữ lâu dài.
File thuộc mục SQL Deep‑Dive của senior‑dotnet‑wiki.