Cách sao lưu và phục hồi cơ sở dữ liệu SQL là kỹ năng rất quan trọng, giúp đảm bảo an toàn và duy trì tính toàn vẹn cho hệ thống dữ liệu. Hiểu được nhu cầu đó, VinaHost sẽ hướng dẫn bạn chi tiết từng bước từ việc tạo bản sao lưu, lựa chọn mô hình phục hồi phù hợp đến khôi phục dữ liệu hiệu quả, giúp bạn quản lý và bảo vệ cơ sở dữ liệu chuyên nghiệp và ổn định hơn.
1. Các nền tảng cốt lõi của SQL Server
1.1 Recovery Model
Recovery Model là một thiết lập ở cấp độ database, quy định cách SQL Server ghi nhận lại các giao dịch. Nó quyết định bạn có thể thực hiện những loại backup nào và khả năng phục hồi dữ liệu đến đâu. Có 3 loại Recovery Model:
SIMPLE:
- Cơ chế: SQL Server tự động xóa các bản ghi giao dịch (transaction log) sau khi chúng đã được ghi vào file dữ liệu.
- Ưu điểm: Tiết kiệm không gian cho file log, quản lý đơn giản.
- Nhược điểm: Không thể sao lưu Transaction Log. Bạn chỉ có thể phục hồi dữ liệu về thời điểm bản backup Full hoặc Differential cuối cùng được tạo. Rủi ro mất dữ liệu rất cao giữa các lần backup.
- Khi nào dùng: Database ít quan trọng, môi trường dev/test, hoặc các database chỉ đọc.
FULL:
- Cơ chế: Mọi giao dịch đều được ghi lại trong file log và chỉ bị xóa đi sau khi bạn đã thực hiện sao lưu file log đó (Log Backup).
- Ưu điểm: Bảo vệ dữ liệu ở mức cao nhất. Cho phép bạn phục hồi database về một thời điểm cụ thể trong quá khứ (Point-in-Time Recovery), ví dụ: 10:05:30 AM sáng nay.
- Nhược điểm: Yêu cầu quản lý chặt chẽ. Nếu bạn không sao lưu log định kỳ, file log sẽ phình to rất nhanh, có thể chiếm hết dung lượng ổ đĩa.
- Khi nào dùng: Bất kỳ hệ thống production nào có dữ liệu quan trọng (hệ thống ERP, website thương mại điện tử, ứng dụng ngân hàng…). Đây là lựa chọn được khuyến nghị cho hầu hết các database quan trọng.
BULK-LOGGED:
- Cơ chế: Là một biến thể của mô hình FULL. Nó vẫn ghi lại các giao dịch nhưng sẽ ghi nhận các thao tác xử lý dữ liệu lớn (như BULK INSERT, CREATE INDEX) một cách tối thiểu để tăng hiệu năng.
- Ưu điểm: Cải thiện hiệu suất cho các tác vụ hàng loạt.
- Nhược điểm: Phức tạp hơn, việc phục hồi Point-in-Time có thể không thực hiện được nếu có các thao tác bulk diễn ra.
1.2 Các loại Backup dữ liệu trong SQL Server
Bạn cần phải hiểu rõ 5 loại backup này và cách chúng phối hợp với nhau. Đây là chìa khóa để xây dựng một chiến lược backup hiệu quả.
Full Backup (Sao lưu Toàn bộ):
- Là gì: Là một bản sao hoàn chỉnh của toàn bộ database tại thời điểm sao lưu, bao gồm cả một phần transaction log cần thiết để phục hồi.
- Đặc điểm: Là nền móng cho tất cả các loại backup khác. File backup có dung lượng lớn nhất và tốn nhiều thời gian nhất.
- Tần suất: Thường được thực hiện hàng ngày (vào ban đêm) hoặc hàng tuần.
Differential Backup:
- Là gì: Chỉ sao lưu những thay đổi đã xảy ra kể từ lần Full Backup gần nhất.
- Đặc điểm: Nhanh hơn và có dung lượng nhỏ hơn Full Backup. Để phục hồi, bạn cần bản Full gần nhất và bản Differential gần nhất.
- Tần suất: Thường được thực hiện nhiều lần trong ngày (ví dụ: 4-6 tiếng/lần).
Transaction Log Backup:
- Là gì: Chỉ sao lưu các bản ghi giao dịch trong file log đã phát sinh kể từ lần Log Backup trước đó.
- Đặc điểm: Rất nhanh và dung lượng cực nhỏ. Cho phép phục hồi đến một thời điểm cụ thể. Chỉ có thể thực hiện khi database ở Recovery Model là FULL hoặc BULK-LOGGED.
- Tần suất: Rất thường xuyên (ví dụ: 15 phút/lần, 30 phút/lần) tùy vào mức độ quan trọng của dữ liệu.
File/Filegroup Backup (Sao lưu theo tệp hoặc nhóm)
- Là gì: sao lưu một phần cơ sở dữ liệu (theo file hoặc filegroup).
- Đặc điểm: Có thể khôi phục riêng từng phần bị lỗi mà không cần toàn DB.
- Tần suất: Cần đảm bảo khôi phục đầy đủ các phần liên quan để dữ liệu nhất quán.
Copy-Only Backup (Sao lưu độc lập)
- Là gì: Tạo bản sao lưu tạm thời, không ảnh hưởng chuỗi backup chính.
- Đặc điểm: Dùng khi cần sao lưu để kiểm thử, di chuyển, chia sẻ dữ liệu.
- Tần suất: Không thay đổi trạng thái “Differential Base” hay log chain.
1.3 Bảng so sánh các loại hình sao lưu:
Loại sao lưu | Mô tả ngắn | Ưu điểm | Nhược điểm | Khi sử dụng |
Full Backup | Sao lưu toàn bộ dữ liệu và cấu trúc DB. | Dễ khôi phục, là nền cho các bản khác. | Tốn dung lượng, thời gian lâu. | Thực hiện định kỳ (tuần/tháng). |
Differential Backup | Sao lưu thay đổi từ lần Full gần nhất. | Nhanh, tiết kiệm dung lượng. | Cần Full Backup để khôi phục. | Dùng xen kẽ giữa các lần Full Backup. |
Transaction Log Backup | Sao lưu các giao dịch phát sinh. | Phục hồi đến thời điểm cụ thể. | Cần quản lý log cẩn thận. | Hệ thống yêu cầu uptime cao. |
File/Filegroup Backup | Sao lưu theo từng tệp hoặc nhóm. | Linh hoạt, tiết kiệm thời gian. | Quản lý và khôi phục phức tạp. | DB lớn, chia nhiều phân vùng. |
Copy-Only Backup | Sao lưu tạm thời, không ảnh hưởng chuỗi chính. | Dễ thực hiện, độc lập. | Không thay thế backup định kỳ. | Dùng khi cần bản sao tạm thời. |
Sau khi đã hiểu rõ được 5 loại backup này. Nó sẽ giúp bạn chọn được loại sao lưu dữ liệu phù hợp với nhu cầu của mình
2. Hướng dẫn chi tiết cách sau lưu (backup) dữ liệu SQL
Dưới đây là hai phương pháp phổ biến giúp bạn thực hiện sao lưu dễ dàng và hiệu quả.
Phương Pháp 1: Sử dụng giao diện đồ họa (SQL Server Management Studio – SSMS)
Phương pháp này phù hợp cho người mới bắt đầu, với các thao tác trực quan và dễ hiểu ngay trong môi trường SSMS.
Bước 1: Mở SQL Server Management Studio (SSMS) và đăng nhập vào máy chủ cơ sở dữ liệu.
Bước 2: Trong Object Explorer, mở rộng cây thư mục Databases.
Bước 3: Nhấp chuột phải vào tên cơ sở dữ liệu → chọn Tasks → Backup…

Bước 4: Trong cửa sổ Back Up Database, cấu hình như sau:
- Backup type: Chọn loại sao lưu (Full, Differential hoặc Transaction Log).
- Backup component: Chọn Database (toàn bộ) hoặc Files and filegroups (từng phần).
- Destination: Chọn Disk → nhấn Add… → chỉ định vị trí lưu file .bak.

Bước 5: Kiểm tra lại các tùy chọn → nhấn OK để bắt đầu quá trình sao lưu.
Bước 6: Khi hoàn tất, thông báo “The backup of database completed successfully” sẽ xuất hiện.
Lưu ý:
Bạn nên lưu file backup vào ổ đĩa khác ổ hệ thống để tránh mất dữ liệu khi hệ thống gặp sự cố.
Có thể đặt lịch tự động backup thông qua SQL Server Agent (cho bản SQL có Agent).
Phương Pháp 2: Sử dụng lệnh T-SQL (Transact-SQL)
Nếu bạn quen làm việc với cú pháp SQL, việc sử dụng lệnh T-SQL sẽ giúp quá trình sao lưu nhanh hơn và có thể tự động hóa.
Sao lưu toàn bộ cơ sở dữ liệu (Full/Database)
BACKUP DATABASE <TEN_DATABASE>TO DISK = '<DUONG_DAN_LUU_FILE>\<TEN_FILE>.bak'
Sao lưu phần thay đổi kể từ lần sao lưu gần nhất (Differential/Incremental)
BACKUP DATABASE <TEN_DATABASE>TO DISK = '<DUONG_DAN_LUU_FILE>\<TEN_FILE>.bak'WITH DIFFERENTIAL
Sao lưu nhật ký giao dịch (Transaction Log/Log)
BACKUP LOG <TEN_DATABASE>TO DISK = '<DUONG_DAN_LUU_FILE>\<TEN_FILE>.trn'
Ví dụ minh họa:
Lệnh dưới đây thực hiện sao lưu toàn bộ cơ sở dữ liệu QTM và lưu bản sao vào ổ D: với tên file QTM.bak
BACKUP DATABASE QTM TO DISK = 'D:\QTM.bak'
Lệnh tiếp theo dùng để sao lưu các thay đổi kể từ lần backup đầy đủ gần nhất của cơ sở dữ liệu QTM, lưu tại D:\QTM.bak
BACKUP DATABASE QTM TO DISK = 'D:\QTM.bak' WITH DIFFERENTIAL
Lệnh sau đây được dùng để sao lưu log giao dịch của cơ sở dữ liệu QTM, ghi vào tệp QTM_log.trn trên ổ D:
BACKUP LOG QTM TO DISK = 'D:\QTM_log.trn'
3. Hướng dẫn chi tiết cách phục hồi bằng giao diện đồ họa (SSMS)
Sau khi đã có bản sao lưu, bước tiếp theo là phục hồi dữ liệu khi cần thiết. Quá trình này giúp khôi phục lại cơ sở dữ liệu về trạng thái ổn định trước đó. Phương pháp phục hồi bằng SSMS cung cấp giao diện thân thiện, dễ thao tác và phù hợp cho cả người dùng mới lẫn quản trị viên hệ thống.
Lưu ý quan trọng: Trước khi phục hồi, nếu database đang tồn tại, bạn cần đảm bảo không còn kết nối nào đang hoạt động và đưa nó về chế độ Single User hoặc offline.
Bước 1: Mở công cụ và chọn thao tác khôi phục
Mở SQL Server Management Studio (SSMS) và đăng nhập vào máy chủ cơ sở dữ liệu.
- Trong Object Explorer, nhấp chuột phải vào thư mục Databases → chọn Restore Database…

Bước 2: Chọn nguồn dữ liệu để khôi phục
Trong cửa sổ Restore Database, bạn có hai tùy chọn chính:
- Database: Dùng để khôi phục từ các bản sao lưu đã thực hiện trong cùng máy chủ.
- Device: Dùng để khôi phục từ tệp sao lưu .bak được lưu trên máy tính hoặc thiết bị lưu trữ khác.
- Chọn Device nếu bạn có file .bak, sau đó bấm Add… để duyệt và chọn đường dẫn đến file sao lưu.

Bước 3: Cấu hình thông tin khôi phục
Trong mục Destination, tên cơ sở dữ liệu mặc định sẽ được hiển thị. Bạn có thể đổi tên nếu muốn khôi phục ra cơ sở dữ liệu mới.
- Ở mục Restore plan, đánh dấu chọn Restore cho bản sao lưu cần sử dụng.
- Chuyển sang tab Options (trong phần Select a page) để tùy chỉnh thêm:
- Overwrite the existing database (WITH REPLACE): Cho phép ghi đè lên cơ sở dữ liệu hiện tại.
- Restore with Recovery: Cơ sở dữ liệu sẵn sàng sử dụng sau khi khôi phục.
- Restore with Norecovery: Giữ cơ sở dữ liệu ở trạng thái chờ, dùng khi cần phục hồi thêm các bản sao lưu khác (ví dụ Differential hoặc Log).
Bước 4: Thực hiện khôi phục
Sau khi hoàn tất cấu hình, nhấn OK để bắt đầu quá trình khôi phục.
Khi hoàn tất, hệ thống hiển thị thông báo:
“The database restore completed successfully.”
Bước 5: Kiểm tra kết quả
Mở lại mục Databases trong Object Explorer và xác nhận rằng cơ sở dữ liệu đã được khôi phục thành công.
Thực hiện truy vấn thử hoặc kiểm tra dữ liệu để đảm bảo tính toàn vẹn.
Lưu ý:
Đảm bảo file .bak không bị hỏng và có quyền truy cập đọc/ghi tại vị trí được chọn.
Nếu khôi phục từ bản Differential hoặc Transaction Log, cần khôi phục Full Backup trước, sau đó mới thực hiện các bản sao lưu tiếp theo theo đúng thứ tự thời gian.
4. Xây dựng chiến lược sao lưu phù hợp
Database quan trọng (kinh doanh, giao dịch):
- Recovery Model: FULL.
- Lịch trình: Full Backup hàng ngày (đêm), Differential Backup 4-6 tiếng/lần, Transaction Log Backup 15-30 phút/lần.
- Database ít thay đổi (báo cáo, lưu trữ):
Recovery Model: SIMPLE hoặc FULL.
- Lịch trình: Full Backup hàng tuần, Differential Backup hàng ngày.
4.1 Tự động hóa bằng SQL Server Agent
Thực hiện backup thủ công rất dễ sai sót. Hãy để SQL Server Agent làm việc cho bạn.
- Trong SSMS, mở rộng mục SQL Server Agent.
- Chuột phải vào Jobs -> New Job…
- Đặt tên cho Job (ví dụ: Daily_Full_Backup_TenDB).
- Chuyển sang tab Steps -> New…
- Đặt tên Step.
- Type: Chọn Transact-SQL script (T-SQL).
- Command: Dán đoạn mã T-SQL để backup. Ví dụ:
BACKUP DATABASE [TenDatabaseCuaBan] TO DISK = N'D:\Path\To\Backups\TenDatabaseCuaBan_Full.bak' WITH NOFORMAT, INIT, NAME = N'TenDatabaseCuaBan-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO
- Nhấn OK.
- Chuyển sang tab Schedules -> New… để đặt lịch chạy tự động (hàng ngày, hàng tuần…).
- Nhấn OK để lưu Job.
Tạo các Job tương tự cho Differential và Log Backup với lịch trình tương ứng.
4.2 Các lưu ý khi triển khai
- Kiểm tra bản backup: 3 bản sao dữ liệu, trên 2 loại phương tiện lưu trữ khác nhau, và 1 bản sao lưu ở một vị trí địa lý khác. Đừng bao giờ lưu file backup trên cùng một server với database. Để thực hiện quy tắc này một cách hiệu quả và tự động, việc sử dụng một giải pháp sao lưu chuyên nghiệp là vô cùng cần thiết. Dịch vụ Cloud Backup của VinaHost sẽ giúp bạn tự động mã hóa và đẩy các bản sao lưu SQL lên một kho lưu trữ đám mây an toàn, tách biệt hoàn toàn với máy chủ chính, đảm bảo dữ liệu của bạn luôn an toàn ngay cả khi server gặp sự cố nghiêm trọng.

- Áp dụng quy tắc 3-2-1: 3 bản sao dữ liệu, trên 2 loại phương tiện lưu trữ khác nhau, và 1 bản sao lưu ở một vị trí địa lý khác. Đừng bao giờ lưu file backup trên cùng một server với database.
- Gíam sát các Job Backup: Thường xuyên kiểm tra lịch sử chạy của SQL Server Agent Jobs để đảm bảo chúng không bị lỗi.
Tổng kết
Hy vọng bạn đã nắm rõ cách sao lưu và phục hồi cơ sở dữ liệu SQL bằng SSMS và T-SQL. Việc thực hiện sao lưu định kỳ và thiết lập kế hoạch khôi phục hợp lý sẽ giúp đảm bảo hệ thống hoạt động ổn định, giảm thiểu rủi ro mất dữ liệu và duy trì hiệu suất tối ưu cho doanh nghiệp.
Tại VinaHost, chúng tôi hiểu rằng việc bảo vệ dữ liệu là ưu tiên hàng đầu của mọi doanh nghiệp. Chúng tôi cung cấp một hệ sinh thái dịch vụ toàn diện để hỗ trợ bạn, từ việc cung cấp nền tảng Cloud Server mạnh mẽ để vận hành SQL Server, cho đến giải pháp Cloud Backup chuyên nghiệp để bảo vệ dữ liệu của bạn an toàn tuyệt đối. Hãy để VinaHost đồng hành cùng bạn trên con đường xây dựng một hạ tầng dữ liệu vững chắc và hiệu quả.
Xem thêm nhiều thông tin liên quan tại đây hoặc cần tư vấn dịch vụ thì hãy liên hệ:
Email: support@vinahost.vn
Hotline: 1900 6046
Livechat: https://livechat.vinahost.vn/chat.php