Chia sẻ ngay bây giờ:
Mục lục ẩn

sao lưu SQL Server cơ sở dữ liệu với hướng dẫn đầy đủ năm 2025 của chúng tôi. Hướng dẫn từng bước và các phương pháp hay nhất cho mọi trình độ kỹ năng.

1. Giới thiệu về SQL Server sao lưu

1.1 là gì SQL Server Hỗ trợ?

SQL Server Sao lưu là quá trình tạo bản sao các tệp cơ sở dữ liệu của bạn để bảo vệ dữ liệu khỏi mất mát. Sao lưu ghi lại trạng thái cơ sở dữ liệu của bạn tại một thời điểm cụ thể, cho phép bạn khôi phục dữ liệu nếu xảy ra lỗi phần cứng, lỗi của con người hoặc thảm họa.

SQL Server lưu trữ các bản sao lưu trong các tệp .bak theo mặc định, chứa tất cả các đối tượng cơ sở dữ liệu bao gồm bảng, quy trình được lưu trữ, chế độ xem, chỉ mục và nhật ký giao dịch.

1.2 Tại sao SQL Server Sao lưu là quan trọng

Sao lưu cơ sở dữ liệu đóng vai trò là tuyến phòng thủ cuối cùng của bạn chống lại việc mất dữ liệu. Nếu không có các bản sao lưu phù hợp, tổ chức của bạn sẽ gặp phải những rủi ro sau:

  • Mất dữ liệu vĩnh viễn từ lỗi phần cứng hoặc hỏng hóc
  • Thời gian ngừng hoạt động kéo dài trong quá trình phục hồi
  • Gián đoạn kinh doanh và mất doanh thu
  • Vi phạm tuân thủ nếu dữ liệu không thể được phục hồi
  • danh tiếng bị tổn hại từ sự gián đoạn dịch vụ

Đều đặn SQL Server sao lưu đảm bảo tính liên tục của hoạt động kinh doanh và đáp ứng các yêu cầu quy định về bảo vệ dữ liệu.

1.3 Các tình huống mất dữ liệu phổ biến

Hiểu được thời điểm xảy ra mất dữ liệu sẽ giúp bạn xây dựng chiến lược sao lưu hiệu quả:

  • Lỗi phần cứng: Đĩa bị hỏng, máy chủ bị trục trặc hoặc hệ thống lưu trữ bị lỗi
  • Lỗi của con người: Xóa nhầm, cập nhật không chính xác hoặc xóa bảng
  • Các vấn đề về phần mềm: Lỗi ứng dụng, bản cập nhật bị hỏng hoặc hệ thống bị sập
  • Vi phạm an ninh: Các cuộc tấn công ransomware, xóa dữ liệu độc hại hoặc truy cập trái phép
  • Thảm họa thiên nhiên: Hỏa hoạn, lũ lụt hoặc mất điện ảnh hưởng đến trung tâm dữ liệu

2. Hiểu về SQL Server Các loại sao lưu

SQL Server hỗ trợ nhiều loại sao lưu, mỗi loại phục vụ các nhu cầu phục hồi và yêu cầu lưu trữ khác nhau.

2.1 Sao lưu đầy đủ

Sao lưu đầy đủ sẽ tạo ra một bản sao hoàn chỉnh của toàn bộ cơ sở dữ liệu của bạn, bao gồm tất cả các tệp dữ liệu và một phần nhật ký giao dịch cần thiết để phục hồi.

2.1.1 Khi nào nên sử dụng Sao lưu đầy đủ

Sao lưu đầy đủ lý tưởng cho:

  • Thiết lập đường cơ sở cho các loại sao lưu khác
  • Cơ sở dữ liệu vừa và nhỏ, thời gian sao lưu có thể chấp nhận được
  • Lịch trình sao lưu hàng tuần hoặc hàng tháng
  • Cơ sở dữ liệu có những thay đổi không thường xuyên

2.1.2 Ưu điểm và hạn chế của sao lưu toàn bộ

Ưu điểm:

  • Quy trình khôi phục đơn giản nhất – một tệp duy nhất chứa mọi thứ
  • Tự chứa và độc lập với các bản sao lưu khác
  • Thời gian phục hồi nhanh nhất để khôi phục toàn bộ cơ sở dữ liệu

Hạn chế:

  • Yêu cầu không gian lưu trữ đáng kể
  • Thời gian sao lưu dài hơn cho cơ sở dữ liệu lớn
  • Tiêu thụ tài nguyên cao hơn trong các hoạt động sao lưu

2.2 Sao lưu vi sai

Sao lưu khác biệt chỉ ghi lại những thay đổi dữ liệu kể từ lần sao lưu đầy đủ gần nhất, giúp giảm thời gian sao lưu và yêu cầu lưu trữ.

2.2.1 Sao lưu vi sai hoạt động như thế nào

Sao lưu khác biệt theo dõi các sửa đổi bằng cách sử dụng các phạm vi đã thay đổi. Khi bạn khôi phục, SQL Server áp dụng bản sao lưu đầy đủ cuối cùng trước, sau đó áp dụng most sao lưu khác biệt gần đây.

2.2.2 Sao lưu đầy đủ so với sao lưu khác biệt

Sao lưu đầy đủ so với sao lưu khác biệt

Yếu tố Sao lưu đầy đủ Sao lưu vi sai
Kích thước máy Cơ sở dữ liệu hoàn chỉnh Chỉ thay đổi kể từ lần sao lưu đầy đủ cuối cùng
Thời gian sao lưu dài nhất Nhanh hơn đầy đủ
Quá trình khôi phục Khôi phục tập tin đơn lẻ Yêu cầu đầy đủ + khác biệt
Yêu cầu lưu trữ Most không gian Ban đầu ít không gian hơn, tăng dần theo thời gian

2.3 Sao lưu nhật ký giao dịch

Sao lưu nhật ký giao dịch sẽ ghi lại tất cả các giao dịch kể từ lần sao lưu nhật ký cuối cùng, cho phép khôi phục tại một thời điểm.

2.3.1 Hiểu về Nhật ký giao dịch

Nhật ký giao dịch ghi lại mọi sửa đổi trong cơ sở dữ liệu của bạn. Bản sao lưu nhật ký sẽ cắt bớt phần không hoạt động của nhật ký, ngăn không cho nó phát triển vô thời hạn và lấp đầy ổ đĩa của bạn.

2.3.2 Phục hồi tại một thời điểm

Sao lưu nhật ký giao dịch cho phép bạn khôi phục cơ sở dữ liệu về bất kỳ thời điểm cụ thể nào trong bản sao lưu nhật ký. Điều này rất quan trọng để phục hồi dữ liệu sau khi vô tình sửa đổi hoặc xóa.

Để thực hiện khôi phục tại một thời điểm, bạn cần:

  • Bản sao lưu đầy đủ cuối cùng
  • Các most sao lưu khác biệt gần đây (tùy chọn)
  • Tất cả các bản sao lưu nhật ký giao dịch từ bản sao lưu đầy đủ/khác biệt đến tardành thời gian

2.4 Sao lưu nhật ký đuôi

Sao lưu nhật ký đuôi sẽ ghi lại các bản ghi nhật ký chưa được sao lưu, ngăn ngừa mất dữ liệu và duy trì chuỗi nhật ký nguyên vẹn. Trước khi khôi phục SQL Server Để khôi phục cơ sở dữ liệu về thời điểm gần nhất, bạn phải sao lưu phần đuôi nhật ký giao dịch của cơ sở dữ liệu. Bản sao lưu nhật ký giao dịch là bản sao lưu cuối cùng cần quan tâm trong kế hoạch khôi phục cơ sở dữ liệu.

Sơ đồ giải thích các bản sao lưu nhật ký đuôi trong SQL Server.

Lưu ý: Không phải tất cả các trường hợp khôi phục đều yêu cầu sao lưu nhật ký đuôi. Bạn không cần sao lưu nếu điểm khôi phục nằm trong một bản sao lưu nhật ký trước đó. Sao lưu nhật ký đuôi cũng không cần thiết nếu bạn đang di chuyển hoặc thay thế (ghi đè) cơ sở dữ liệu và không cần khôi phục nó về thời điểm sau khi nó bị xóa.ost bản sao lưu gần đây.

2.4.1 Khi nào cần sao lưu Tail-Log

Các tình huống sau đây mô tả thời điểm bạn nên sao lưu nhật ký đuôi:

Khôi phục cơ sở dữ liệu trực tuyến: Nếu cơ sở dữ liệu đang trực tuyến và bạn dự định thực hiện thao tác khôi phục trên cơ sở dữ liệu, hãy bắt đầu bằng cách sao lưu phần cuối của nhật ký. Để tránh lỗi cho cơ sở dữ liệu trực tuyến, bạn phải sử dụng tùy chọn WITH NORECOVERY của câu lệnh BACKUP Transact-SQL khi sao lưu. SQL Server cơ sở dữ liệu.

Khôi phục cơ sở dữ liệu ngoại tuyến: Nếu cơ sở dữ liệu ngoại tuyến và không thể starNếu bạn cần khôi phục cơ sở dữ liệu, trước tiên hãy sao lưu phần cuối của nhật ký. Vì không có giao dịch nào có thể xảy ra tại thời điểm này, nên việc sử dụng tùy chọn WITH NORECOVERY là tùy chọn. Trong trường hợp này, NORECOVERY về cơ bản giống như sao lưu nhật ký giao dịch chỉ sao chép.

Sao lưu cơ sở dữ liệu bị hỏng: Nếu cơ sở dữ liệu bị hỏng, hãy thử sao lưu tail-log bằng cách sử dụng tùy chọn WITH CONTINUE_AFTER_ERROR của câu lệnh BACKUP. Trên cơ sở dữ liệu bị hỏng, việc sao lưu tail-log chỉ có thể thành công nếu các tệp nhật ký không bị hỏng, cơ sở dữ liệu ở trạng thái hỗ trợ sao lưu tail-log và cơ sở dữ liệu không chứa bất kỳ thay đổi nào được ghi nhật ký hàng loạt. Nếu không thể tạo bản sao lưu tail-log, mọi giao dịch được cam kết sau MS mới nhất SQL Server cơ sở dữ liệu sao lưu là lost.

2.4.2 Các tùy chọn chính cho bản sao lưu Tail-Log

VỚI NORECOVERY: Sử dụng WITH NORECOVERY nếu bạn đang sao lưu một phần nhật ký của cơ sở dữ liệu trực tuyến mà bạn dự định khôi phục sau đó. NORECOVERY sẽ đưa cơ sở dữ liệu ngoại tuyến. Bạn cũng có thể sao lưu SQL Server Nhật ký đuôi của cơ sở dữ liệu ngoại tuyến. Nếu bạn muốn để cơ sở dữ liệu ngoại tuyến, hãy sử dụng WITH NORECOVERY. Lưu ý rằng nhật ký sẽ bị cắt bớt trừ khi bạn chỉ định tùy chọn COPY_ONLY hoặc NO_TRUNCATE.

VỚI CONTINUE_AFTER_ERROR: Chỉ sử dụng CONTINUE_AFTER_ERROR nếu bạn đang sao lưu phần đuôi của cơ sở dữ liệu bị hỏng. Khi bạn sao lưu phần đuôi của nhật ký trên cơ sở dữ liệu bị hỏng, một số siêu dữ liệu thường được ghi lại trong bản sao lưu nhật ký có thể không khả dụng.

2.5 Sao lưu chỉ sao chép

Sao lưu chỉ sao chép tạo ra một bản sao lưu độc lập mà không ảnh hưởng đến trình tự sao lưu thông thường. Chúng không làm gián đoạn chuỗi sao lưu khác biệt hoặc tính liên tục của nhật ký giao dịch.

Sử dụng bản sao lưu chỉ sao chép cho:

  • Tạo bản sao cơ sở dữ liệu thử nghiệm hoặc phát triển
  • Sao lưu tạm thời mà không ảnh hưởng đến các bản sao lưu theo lịch trình
  • Sao lưu trước khi thay đổi hoặc thử nghiệm lớn

2.6 Sao lưu tệp và nhóm tệp

Sao lưu tệp và nhóm tệp tarLấy các tệp hoặc nhóm tệp cơ sở dữ liệu cụ thể thay vì toàn bộ cơ sở dữ liệu. Cách tiếp cận này hiệu quả với các cơ sở dữ liệu rất lớn, nơi việc sao lưu mọi thứ mất quá nhiều thời gian.

Lợi ích bao gồm:

  • Hoạt động sao lưu nhanh hơn cho cơ sở dữ liệu lớn
  • Sao lưu song song nhiều nhóm tệp
  • Tùy chọn phục hồi chi tiết
  • Lịch trình sao lưu được tối ưu hóa cho các nhóm tệp chỉ đọc

2.7 Sao lưu một phần

Sao lưu một phần bao gồm tất cả dữ liệu trong nhóm tệp chính và bất kỳ nhóm tệp đọc-ghi nào, ngoại trừ nhóm tệp chỉ đọc. Điều này giúp giảm kích thước và thời gian sao lưu cho cơ sở dữ liệu có dữ liệu lịch sử tĩnh được lưu trữ trong nhóm tệp chỉ đọc.

3. SQL Server Mô hình phục hồi

SQL Server mô hình phục hồi xác định loại sao lưu nào khả dụng và cách quản lý nhật ký giao dịch.

3.1 Mô hình phục hồi đơn giản

3.1.1 Đặc điểm và trường hợp sử dụng

Tính năng khôi phục đơn giản sẽ tự động cắt bớt nhật ký giao dịch sau mỗi điểm kiểm tra, lấy lại dung lượng mà không cần sao lưu nhật ký.

Tốt nhất cho:

  • Cơ sở dữ liệu phát triển và thử nghiệm
  • Cơ sở dữ liệu mà việc mất dữ liệu giữa các lần sao lưu là chấp nhận được
  • Kho dữ liệu với các quy trình ETL có thể chạy lại
  • Cơ sở dữ liệu chỉ đọc hoặc báo cáo

3.1.2 Các tùy chọn sao lưu có sẵn

Hỗ trợ phục hồi đơn giản:

  • Sao lưu đầy đủ
  • Sao lưu vi sai
  • Sao lưu tệp và nhóm tệp
  • Sao lưu chỉ sao chép

Sao lưu nhật ký giao dịch là không có sẵn trong mô hình phục hồi đơn giản.

3.2 Mô hình phục hồi hoàn toàn

3.2.1 Tính năng và lợi ích

Khôi phục hoàn toàn ghi lại tất cả các giao dịch và lưu giữ hồ sơ nhật ký cho đến khi bạn sao lưu chúng. Tính năng này cho phép khôi phục dữ liệu hoàn chỉnh tại bất kỳ thời điểm nào trong bản sao lưu nhật ký giao dịch.

Lợi ích chính:

  • Khả năng mất dữ liệu tối thiểu
  • Khả năng khôi phục tại thời điểm
  • Hỗ trợ vận chuyển nhật ký và sao chép cơ sở dữ liệu
  • Tính linh hoạt phục hồi tối đa

3.2.2 Quản lý nhật ký giao dịch

Trong quá trình khôi phục hoàn toàn, bạn phải thực hiện sao lưu nhật ký giao dịch thường xuyên để:

  • Ngăn chặn nhật ký giao dịch lấp đầy dung lượng đĩa
  • Duy trì chuỗi sao lưu liên tục
  • Cho phép khôi phục tại thời điểm cụ thể
  • Kiểm soát sự phát triển của tệp nhật ký

Lịch trình sao lưu thông thường: sao lưu đầy đủ hàng tuần, sao lưu khác biệt hàng ngày, sao lưu nhật ký sau mỗi 15-30 phút.

3.3 Mô hình phục hồi được ghi nhật ký hàng loạt

3.3.1 Khi nào nên sử dụng Bulk-Logged

Khôi phục ghi nhật ký hàng loạt ghi lại tối thiểu các hoạt động hàng loạt như BULK INSERT, SELECT INTO và xây dựng lại chỉ mục trong khi vẫn duy trì ghi nhật ký đầy đủ cho các giao dịch thông thường.

Sử dụng phục hồi được ghi nhật ký hàng loạt khi:

  • Thực hiện các hoạt động nhập khẩu số lượng lớn
  • Xây dựng lại các chỉ mục trên các bảng lớn
  • Thực hiện các hoạt động có lợi từ việc ghi nhật ký tối thiểu
  • Cần giảm kích thước nhật ký giao dịch trong các hoạt động cụ thể

3.3.2 Hạn chế và cân nhắc

Những hạn chế quan trọng:

  • Khôi phục điểm thời gian không khả dụng trong các hoạt động hàng loạt
  • Bản sao lưu nhật ký lớn hơn khi các hoạt động hàng loạt xảy ra
  • Phải chuyển đổi giữa chế độ ghi nhật ký đầy đủ và ghi nhật ký hàng loạt khi cần thiết

3.4 Lựa chọn mô hình phục hồi phù hợp

Chọn mô hình phục hồi của bạn dựa trên yêu cầu kinh doanh:

Mô hình phục hồi Rủi ro mất dữ liệu Phục hồi tại thời điểm tốt nhất cho
Đơn giản Những thay đổi kể từ lần sao lưu cuối cùng Không Phát triển/kiểm tra, mất dữ liệu chấp nhận được
Full Tối thiểu (thường là phút) Cơ sở dữ liệu sản xuất, dữ liệu quan trọng
Đã đăng nhập hàng loạt Những thay đổi kể từ lần sao lưu nhật ký cuối cùng Hạn chế trong quá trình vận hành hàng loạt Thời gianrary sử dụng trong các hoạt động hàng loạt

4. Sao lưu SQL Server Cơ sở dữ liệu sử dụng SSMS

4.1 Điều kiện tiên quyết và chuẩn bị

Trước khi sao lưu SQL Server cơ sở dữ liệu, đảm bảo:

  • Bạn có quyền thích hợp (quyền db_owner hoặc quyền BACKUP DATABASE)
  • Không gian đĩa đủ cho tệp sao lưu
  • SQL Server Đã cài đặt Management Studio (SSMS)
  • Đường dẫn mạng có thể truy cập được nếu sao lưu vào các vị trí mạng

4.2 Hướng dẫn từng bước: Sao lưu toàn bộ bằng SSMS

Thực hiện theo các bước sau để tạo bản sao lưu đầy đủ của bạn SQL Server cơ sở dữ liệu sử dụng SSMS.

4.2.1 Mở đầu SQL Server Studio quản lý

  1. Khởi động SQL Server Studio quản lý
  2. Nhập tên máy chủ của bạn vào Tên máy chủ lĩnh vực
  3. Chọn phương thức xác thực của bạn
  4. Nhấp chuột Kết nối

4.2.2 Chọn tùy chọn cơ sở dữ liệu và sao lưu

  1. In Trình khám phá đối tượng, mở rộng Cơ sở dữ liệu nút
  2. Nhấp chuột phải vào cơ sở dữ liệu bạn muốn sao lưu
  3. Chọn Nhiệm vụ -> Sao lưu
    Starta nhiệm vụ sao lưu cho một SQL Server cơ sở dữ liệu trong SQL Server Phòng thu quản lý.
  4. Trong tạp chí Sao lưu cơ sở dữ liệu cửa sổ, xác minh tên cơ sở dữ liệu
  5. Chọn Full như Kiểu sao lưu
    Tạo bản sao lưu đầy đủ của một SQL Server cơ sở dữ liệu trong SQL Server Phòng thu quản lý.

4.2.3 Cấu hình đích sao lưu

  1. Theo Nơi đến, Click Hủy bỏ để xóa đường dẫn mặc định (nếu cần)
  2. Nhấp chuột Thêm để chỉ định vị trí sao lưu mới
  3. Nhập đường dẫn và tên tệp với .bak mở rộng
  4. Nhấp chuột OK để xác nhận điểm đến

Đặt đích sao lưu trong SQL Server Phòng thu quản lý.

4.2.4 Advanced Backup Cài Đặt

  1. Nhấp chuột Tùy chọn phương tiện trong bảng điều khiển bên trái
  2. Chọn tùy chọn sao lưu:
    • Ghi đè lên tất cả các tập sao lưu hiện có – Thay thế các bản sao lưu hiện có
    • Thêm vào tập sao lưu hiện có – Thêm vào tệp sao lưu hiện có

    Đặt tùy chọn phương tiện sao lưu trong SQL Server Phòng thu quản lý.

  3. Nhấp chuột backup Options trong bảng điều khiển bên trái
  4. Cấu hình các thiết lập tùy chọn:
    • Nén sao lưu – Giảm kích thước tệp sao lưu
    • Mã hóa sao lưu – Bảo vệ dữ liệu nhạy cảm
    • Xác minh sao lưu khi hoàn tất – Kiểm tra tính toàn vẹn của bản sao lưu

    Đặt các tùy chọn sao lưu trong SQL Server Phòng thu quản lý.

4.2.5 Thực hiện sao lưu

  1. Xem lại tất cả các thiết lập trong Sao lưu cơ sở dữ liệu cửa sổ
  2. Nhấp chuột OK sau đó ptart quá trình sao lưu
  3. Chờ quá trình sao lưu hoàn tất
  4. Một thông báo thành công sẽ xuất hiện khi quá trình sao lưu hoàn tất
  5. Nhấp chuột OK để đóng hộp thoại xác nhận

4.3 Tạo bản sao lưu khác biệt với SSMS

Để tạo bản sao lưu khác biệt, hãy làm theo các bước tương tự như bản sao lưu đầy đủ, nhưng chọn Khác biệt như kiểu sao lưu ở bước 4.2.2. Hãy nhớ rằng sao lưu khác biệt yêu cầu phải có bản sao lưu đầy đủ trước đó làm cơ sở.

Tạo bản sao lưu khác biệt của một SQL Server cơ sở dữ liệu trong SQL Server Phòng thu quản lý.

4.4 Tạo bản sao lưu nhật ký giao dịch bằng SSMS

Sao lưu nhật ký giao dịch chỉ khả dụng cho cơ sở dữ liệu sử dụng mô hình khôi phục Đầy đủ hoặc Ghi nhật ký hàng loạt.

  1. Nhấp chuột phải vào cơ sở dữ liệu trong Trình khám phá đối tượng
  2. Chọn Nhiệm vụ -> Sao lưu
  3. Chọn Nhật ký giao dịch như loại sao lưu
  4. Cấu hình đích và các tùy chọn khi cần thiết
  5. Nhấp chuột OK để tạo bản sao lưu nhật ký

Tạo bản sao lưu nhật ký giao dịch của một SQL Server cơ sở dữ liệu trong SQL Server Phòng thu quản lý.

4.5 Tạo bản sao lưu chỉ sao chép bằng SSMS

Sao lưu chỉ sao chép không ảnh hưởng đến trình tự sao lưu thông thường của bạn.

  1. Thực hiện theo các bước để tạo bản sao lưu đầy đủ
  2. Trong tạp chí backup Options trang
  3. Kiểm tra Sao lưu chỉ sao chép tùy chọn
  4. Hoàn tất quá trình sao lưu bình thường

Tạo bản sao lưu chỉ sao chép của một SQL Server cơ sở dữ liệu trong SQL Server Phòng thu quản lý.

5. Sao lưu SQL Server Cơ sở dữ liệu sử dụng T-SQL

5.1 Cú pháp sao lưu cơ bản của cơ sở dữ liệu

Lệnh T-SQL BACKUP DATABASE cung cấp khả năng kiểm soát theo chương trình đối với SQL Server các bản sao lưu.

BACKUP DATABASE database_name
TO DISK = 'backup_file_path'
WITH options;

5.2 Lệnh T-SQL sao lưu đầy đủ

5.2.1 Tập lệnh sao lưu đầy đủ đơn giản

Tạo bản sao lưu đầy đủ cơ bản với các tùy chọn tối thiểu:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
GO

5.2.2 Sao lưu đầy đủ với các tùy chọn

Thêm thông tin mô tả và tùy chọn định dạng:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH FORMAT,
     INIT,
     NAME = 'AdventureWorks-Full Database Backup',
     DESCRIPTION = 'Full backup of AdventureWorks database',
     STATS = 10
GO

Giải thích các tùy chọn:

  • FORMAT – Tạo tập sao lưu mới
  • INIT – Ghi đè lên tệp sao lưu hiện có
  • TÊN – Gán tên tập sao lưu
  • MÔ TẢ – Thêm văn bản mô tả
  • STATS – Hiển thị tiến độ sau mỗi 10%

5.3 Lệnh T-SQL sao lưu khác biệt

Sao lưu khác biệt sử dụng tùy chọn DIFFERENTIAL:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Diff.bak'
WITH DIFFERENTIAL,
     INIT,
     NAME = 'AdventureWorks-Differential Backup',
     STATS = 10
GO

5.4 Lệnh T-SQL sao lưu nhật ký giao dịch

Sử dụng BACKUP LOG để sao lưu nhật ký giao dịch:

BACKUP LOG AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Log.trn'
WITH INIT,
     NAME = 'AdventureWorks-Transaction Log Backup',
     STATS = 10
GO

5.5 Tùy chọn sao lưu T-SQL nâng cao

5.5.1 Sao lưu vào nhiều tệp

Phân phối bản sao lưu trên nhiều tệp để có hiệu suất nhanh hơn:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_1.bak',
   DISK = 'D:\Backups\AdventureWorks_2.bak',
   DISK = 'E:\Backups\AdventureWorks_3.bak'
WITH FORMAT, INIT
GO

5.5.2 Sao lưu bằng nén

Giảm kích thước tệp sao lưu và băng thông mạng:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Compressed.bak'
WITH COMPRESSION,
     INIT,
     STATS = 10
GO

5.5.3 Sao lưu với mã hóa

Bảo vệ dữ liệu nhạy cảm bằng mã hóa:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Encrypted.bak'
WITH COMPRESSION,
     ENCRYPTION (
         ALGORITHM = AES_256,
         SERVER CERTIFICATE = BackupCertificate
     ),
     STATS = 10
GO

5.5.4 Sao lưu với Bảo vệ bằng Mật khẩu

Thêm bảo vệ bằng mật khẩu (đã lỗi thời, thay vào đó hãy sử dụng mã hóa):

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH PASSWORD = 'StrongPassword123!',
     INIT
GO

5.5.5 Sao lưu được phản chiếu

Tạo các bản sao đồng thời đến nhiều vị trí khác nhau:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
MIRROR TO DISK = 'D:\Backups\AdventureWorks_Mirror.bak'
WITH FORMAT, INIT
GO

5.6 Ví dụ và tập lệnh sao lưu T-SQL

Tập lệnh sao lưu hoàn chỉnh có xử lý lỗi:

DECLARE @BackupPath NVARCHAR(500);
DECLARE @DatabaseName NVARCHAR(128) = 'AdventureWorks';
DECLARE @BackupDate NVARCHAR(20);

SET @BackupDate = CONVERT(NVARCHAR(20), GETDATE(), 112);
SET @BackupPath = 'C:\Backups\' + @DatabaseName + '_' + @BackupDate + '.bak';

BEGIN TRY
    BACKUP DATABASE @DatabaseName
    TO DISK = @BackupPath
    WITH COMPRESSION,
         INIT,
         NAME = @DatabaseName + '-Full Backup',
         STATS = 10;
    
    PRINT 'Backup completed successfully: ' + @BackupPath;
END TRY
BEGIN CATCH
    PRINT 'Backup failed: ' + ERROR_MESSAGE();
END CATCH
GO

6. Sao lưu SQL Server Cơ sở dữ liệu sử dụng PowerShell

6.1 Lệnh ghép ngắn sao lưu PowerShell

SQL Server Mô-đun PowerShell cung cấp các lệnh ghép ngắn để tự động sao lưu:

  • Sao lưu-SqlDatabase – Tạo bản sao lưu cơ sở dữ liệu
  • Khôi phục-SqlDatabase – Khôi phục bản sao lưu cơ sở dữ liệu
  • Lấy-SqlDatabase – Lấy thông tin cơ sở dữ liệu

Nhập SQL Server mô-đun:

Import-Module SqlServer

6.2 Tạo tập lệnh sao lưu bằng PowerShell

Lệnh sao lưu PowerShell cơ bản:

Backup-SqlDatabase -ServerInstance "localhost" `
                    -Database "AdventureWorks" `
                    -BackupFile "C:\Backups\AdventureWorks.bak" `
                    -BackupAction Database `
                    -CompressionOption On

Ví dụ về sao lưu khác biệt:

Backup-SqlDatabase -ServerInstance "localhost" `
                    -Database "AdventureWorks" `
                    -BackupFile "C:\Backups\AdventureWorks_Diff.bak" `
                    -BackupAction Database `
                    -Incremental

Sao lưu nhật ký giao dịch:

Backup-SqlDatabase -ServerInstance "localhost" `
                    -Database "AdventureWorks" `
                    -BackupFile "C:\Backups\AdventureWorks_Log.trn" `
                    -BackupAction Log

6.3 Tự động sao lưu bằng PowerShell

Tạo một tập lệnh sao lưu tự động cho nhiều cơ sở dữ liệu:

# Configuration
$ServerInstance = "localhost"
$BackupPath = "C:\Backups"
$Databases = @("AdventureWorks", "TestDB", "ProductionDB")
$Timestamp = Get-Date -Format "yyyyMMdd_HHmmss"

# Create backup directory if not exists
if (-not (Test-Path $BackupPath)) {
    New-Item -ItemType Directory -Path $BackupPath
}

# Backup each database
foreach ($Database in $Databases) {
    $BackupFile = Join-Path $BackupPath "$Database`_$Timestamp.bak"
    
    try {
        Backup-SqlDatabase -ServerInstance $ServerInstance `
                          -Database $Database `
                          -BackupFile $BackupFile `
                          -BackupAction Database `
                          -CompressionOption On
        
        Write-Host "Successfully backed up $Database to $BackupFile" -ForegroundColor Green
    }
    catch {
        Write-Host "Failed to backup $Database : $_" -ForegroundColor Red
    }
}

7. Sao lưu SQL Server Cơ sở dữ liệu sử dụng dòng lệnh

SQL Server cung cấp các tiện ích dòng lệnh cho phép bạn sao lưu SQL Server cơ sở dữ liệu mà không cần sử dụng SSMS hoặc giao diện đồ họa. Những công cụ này rất cần thiết cho các tình huống tự động hóa, viết kịch bản và quản trị từ xa.

7.1 Sử dụng cơ sở dữ liệu sao lưu SQLCMD

SQLCMD là tiện ích dòng lệnh hiện đại dành cho SQL Server đã thay thế OSQL. Nó cung cấp chức năng nâng cao và là công cụ được khuyến nghị để thực thi các lệnh T-SQL từ dấu nhắc lệnh.

7.1.1 Cú pháp SQLCMD cơ bản

sqlcmd -S ServerName -d DatabaseName -Q "BACKUP DATABASE statement"
  • -NS: Chỉ định SQL Server tên ví dụ
  • -NS: Chỉ định tên cơ sở dữ liệu
  • -Hỏi: Thực hiện truy vấn và thoát
  • -Ê: Sử dụng Xác thực Windows
  • -U: Chỉ định SQL Server tên đăng nhập
  • -P: Chỉ định mật khẩu cho SQL Server đăng nhập

7.1.2 Tạo bản sao lưu bằng SQLCMD

Để sao lưu SQL Server khi sử dụng SQLCMD, hãy làm theo các bước sau:

  1. Mở Command Prompt or PowerShell
  2. Điều hướng đến SQL Server thư mục công cụ (thường được thêm vào PATH trong quá trình cài đặt)
  3. Thực hiện lệnh sao lưu cơ sở dữ liệu SQLCMD với các tham số thích hợp
  4. Xác minh tệp sao lưu đã được tạo thành công

Ví dụ về lệnh sao lưu đầy đủ bằng Xác thực Windows:

sqlcmd -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks.bak' WITH COMPRESSION, INIT"

Ví dụ sử dụng SQL Server Xác thực:

sqlcmd -S localhost -U sa -P YourPassword -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks.bak' WITH COMPRESSION, INIT"

Tạo bản sao lưu khác biệt với SQLCMD

sqlcmd -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks_Diff.bak' WITH DIFFERENTIAL, COMPRESSION, INIT"

Tạo bản sao lưu nhật ký giao dịch bằng SQLCMD

sqlcmd -S localhost -E -Q "BACKUP LOG AdventureWorks TO DISK='C:\Backups\AdventureWorks_Log.trn' WITH COMPRESSION, INIT"

7.1.3 Sao lưu cơ sở dữ liệu Publisher trong SQL Server Nhân rộng

Khi sao lưu cơ sở dữ liệu của nhà xuất bản trong SQL Server Để sao chép dữ liệu, hãy sử dụng tùy chọn WITH REPLICATION nhằm bảo toàn siêu dữ liệu sao chép và đảm bảo tính nhất quán giao dịch.

-- Backup publisher database with replication support
BACKUP DATABASE PublisherDB 
TO DISK = 'C:\Backup\PublisherDB_Full.bak'
WITH REPLICATION, 
     COMPRESSION,
     CHECKSUM,
     INIT,
     STATS = 10;
GO

Để biết thêm chi tiết về SQL Server sao chép, xem của chúng tôi hướng dẫn toàn diện.

7.2 Sử dụng Cơ sở dữ liệu sao lưu OSQL

OSQL là một tiện ích dòng lệnh cũ dành cho SQL ServerMặc dù Microsoft khuyến nghị sử dụng SQLCMD, OSQL vẫn có khả năng tương thích ngược với các tập lệnh và hệ thống cũ hơn.

7.2.1 Cú pháp OSQL cơ bản

Cú pháp OSQL tương tự như SQLCMD:

osql -S ServerName -d DatabaseName -Q "BACKUP DATABASE statement"
  • -NS: SQL Server tên ví dụ
  • -NS: Tên cơ sở dữ liệu
  • -Hỏi: Thực hiện truy vấn và thoát
  • -Ê: Sử dụng kết nối đáng tin cậy (Xác thực Windows)
  • -U: Tên đăng nhập
  • -P: Mật khẩu đăng nhập

7.2.2 Tạo bản sao lưu với OSQL

Để thực hiện các thao tác sao lưu cơ sở dữ liệu OSQL:

  1. Mở Command Prompt
  2. Xác minh OSQL có sẵn trong SQL Server cài đặt
  3. Thực hiện lệnh sao lưu OSQL

Ví dụ sao lưu đầy đủ:

osql -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks.bak' WITH INIT"

Ví dụ về sao lưu khác biệt:

osql -S localhost -E -Q "BACKUP DATABASE AdventureWorks TO DISK='C:\Backups\AdventureWorks_Diff.bak' WITH DIFFERENTIAL, INIT"

8. Bên thứ ba SQL Server Công cụ sao lưu

Trong khi SQL Server Bao gồm khả năng sao lưu gốc, các công cụ của bên thứ ba cung cấp các tính năng nâng cao, tự động hóa và quản lý cấp doanh nghiệp cho các tổ chức có yêu cầu phức tạp. Các giải pháp này cung cấp khả năng nén tiên tiến, quản lý tập trung và quy trình làm việc hợp lý để sao lưu. SQL Server cơ sở dữ liệu trên nhiều môi trường.

8.1 Veeam Backup cho SQL Server

Veeam cung cấp các giải pháp bảo vệ dữ liệu toàn diện được thiết kế đặc biệt để sao lưu SQL Server cơ sở dữ liệu có tác động tối thiểu đến hệ thống sản xuất.

Tính năng chính:

  • Xử lý nhận biết ứng dụng cho SQL Server tính nhất quán sao lưu
  • Sao lưu và quản lý nhật ký giao dịch
  • Phục hồi tại thời điểm cụ thể với các tùy chọn khôi phục chi tiết
  • Tích hợp với Veeam Backup & Replication để bảo vệ dữ liệu thống nhất
  • Xác minh và xác thực sao lưu tự động
  • Hỗ trợ cho các nhóm luôn sẵn sàng
  • Cấp độ VM và cấp độ ứng dụng SQL Server tùy chọn sao lưu

8.2 Barracuda Backup cho SQL Server

Barracuda cung cấp các giải pháp sao lưu tích hợp đám mây với khả năng quản lý đơn giản cho MS SQL Server hoạt động sao lưu cơ sở dữ liệu.

Tính năng chính:

  • Tự động SQL Server lập lịch sao lưu
  • Sao chép đám mây tích hợp vào Barracuda Cloud Storage
  • Loại bỏ trùng lặp và nén toàn cầu
  • Khả năng phục hồi cục bộ tức thì
  • Bảng điều khiển quản lý dựa trên web
  • Hỗ trợ sao lưu nhật ký đầy đủ, khác biệt và giao dịch
  • Bảo vệ chống phần mềm tống tiền bằng bản sao lưu không thể thay đổi

8.3 Veritas NetBackup cho SQL Server

Veritas NetBackup là một nền tảng sao lưu cấp doanh nghiệp cung cấp khả năng bảo vệ toàn diện cho SQL Server cơ sở dữ liệu trên các môi trường CNTT phức tạp.

Tính năng chính:

  • Quản lý sao lưu quy mô doanh nghiệp cho hàng ngàn SQL Server trường hợp
  • Thuật toán nén và khử trùng lặp nâng cao
  • Chính sách sao lưu và lập lịch linh hoạt
  • Hỗ trợ cho tất cả SQL Server mô hình phục hồi
  • Tích hợp với thư viện băngraries và lưu trữ đám mây
  • Phục hồi chi tiết cơ sở dữ liệu, bảng và đối tượng
  • Hỗ trợ đa nền tảng (Windows, Linux SQL Server)
  • Quản lý vòng đời sao lưu tự động

8.4 Commvault Sao lưu và phục hồi hoàn chỉnh cho SQL Server

Commvault cung cấp dịch vụ quản lý dữ liệu thông minh với khả năng sao lưu toàn diện SQL Server khả năng và tính năng tự động hóa tiên tiến.

Tính năng chính:

  • Tối ưu hóa sao lưu và phát hiện bất thường do AI điều khiển
  • Nền tảng thống nhất để sao lưu, phục hồi và lưu trữ
  • Nâng cao SQL Server nén dự phòng (giảm tới 90%)
  • Phối hợp phục hồi thảm họa tự động
  • Đồng bộ trực tiếp để bảo vệ RPO gần như bằng không
  • Hỗ trợ cho SQL Server triển khai tại chỗ, trên nền tảng đám mây và kết hợp
  • IntelliSnap để sao lưu dựa trên ảnh chụp nhanh
  • Khả năng tuân thủ toàn diện và khám phá điện tử

8.5 Cohesity DataProtect cho SQL Server

Cohesity cung cấp dịch vụ quản lý dữ liệu thế hệ tiếp theo với cơ sở hạ tầng siêu hội tụ cho hiện đại SQL Server hoạt động sao lưu.

Tính năng chính:

  • Kiến trúc quy mô web để quản lý đơn giản hơn
  • Khả năng khôi phục hàng loạt tức thì cho SQL Server cơ sở dữ liệu
  • Ảnh chụp nhanh phù hợp với ứng dụng
  • Loại bỏ trùng lặp toàn cầu trên tất cả các bản sao lưu
  • Tích hợp đám mây gốc (AWS, Azure, Google Cloud)
  • Bảng thông tin phân tích và giám sát tích hợp
  • Sao chép và kiểm tra khả năng của cơ sở dữ liệu
  • Bảo vệ chống phần mềm tống tiền bằng ảnh chụp nhanh không thể thay đổi

8.6 Red Gate SQL Backup Pro

Red Gate SQL Backup Pro là một công cụ chuyên dụng tập trung hoàn toàn vào việc tối ưu hóa SQL Server hoạt động sao lưu và khôi phục với khả năng nén và hiệu suất vượt trội.

Tính năng chính:

  • Tỷ số nén hàng đầu trong ngành (lên đến 95%)
  • Khả năng phục hồi mạng để sao lưu SQL Server qua các kết nối không đáng tin cậy
  • Mã hóa sao lưu với AES 256-bit
  • Xác minh bản sao lưu và kiểm tra tính toàn vẹn
  • Lịch sử sao lưu và báo cáo chi tiết
  • Hội nhập với SQL Server Studio quản lý
  • Hỗ trợ sao lưu vào các vị trí mạng và lưu trữ đám mây
  • Sao lưu và khôi phục song song để hoạt động nhanh hơn

9. Cách khôi phục SQL Server Cơ sở dữ liệu

9.1 Hiểu về quy trình khôi phục

Khôi phục một SQL Server Cơ sở dữ liệu tạo lại cơ sở dữ liệu từ các tệp sao lưu. Quá trình khôi phục sẽ đọc tệp sao lưu và xây dựng lại cơ sở dữ liệu về trạng thái đã sao lưu.

Cân nhắc quan trọng:

  • Khôi phục sẽ ghi đè lên cơ sở dữ liệu hiện có
  • Người dùng bị ngắt kết nối trong quá trình khôi phục
  • Khôi phục phải tuân theo trình tự sao lưu (đầy đủ, sau đó là sao lưu khác biệt, sau đó là nhật ký)
  • Cơ sở dữ liệu không khả dụng trong quá trình khôi phục

9.2 Khôi phục bản sao lưu đầy đủ bằng SSMS

Thực hiện theo các bước sau để khôi phục bản sao lưu cơ sở dữ liệu đầy đủ.

9.2.1 Quy trình khôi phục từng bước

  1. Mở SQL Server Studio quản lý và kết nối với máy chủ của bạn
  2. In Trình khám phá đối tượng, nhấp chuột phải Cơ sở dữ liệu
  3. Chọn Khôi phục cơ sở dữ liệu
  4. Trong tạp chí nguồn phần, chọn Dụng cụ
  5. Nhấn vào ... nút để duyệt các tập tin sao lưu
  6. Nhấp chuột Thêm và điều hướng đến tệp .bak của bạn
  7. Chọn tệp sao lưu và nhấp vào OK
  8. Trong tạp chí Nơi đến phần, nhập tên cơ sở dữ liệu
  9. Xem lại các tập sao lưu để khôi phục
  10. Nhấp chuột OK sau đó ptart khôi phục

9.2.2 Khôi phục Tùy chọn và Cài đặt

Nhấp chuột Các lựa chọn trong bảng điều khiển bên trái để cấu hình:

  • Ghi đè cơ sở dữ liệu hiện có (BẰNG REPLACE) – Cho phép khôi phục lại cơ sở dữ liệu hiện có
  • Giữ nguyên trạng thái sao chép (WITH KEEP_REPLICATION) – Giữ lại SQL Server nhân rộng nhà nước
  • Hạn chế quyền truy cập vào cơ sở dữ liệu đã khôi phục (VỚI RESTRICTED_USER) – Giới hạn post-khôi phục quyền truy cập
  • Trạng thái phục hồi – Chọn giữa RESTORE WITH RECOVERY hoặc NORECOVERY

9.3 Khôi phục sao lưu khác biệt

Khôi phục khác biệt yêu cầu cả bản sao lưu đầy đủ và bản sao lưu khác biệt:

  1. Đầu tiên, khôi phục bản sao lưu đầy đủ bằng KHÔNG PHÁT HIỆN tùy chọn
  2. Sau đó khôi phục bản sao lưu khác biệt với PHỤC HỒI tùy chọn

Ví dụ về T-SQL:

-- Restore full backup (NORECOVERY to allow differential)
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY, REPLACE;

-- Restore differential backup (RECOVERY to complete)
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Diff.bak'
WITH RECOVERY;
GO

9.4 Khôi phục bằng bản sao lưu nhật ký giao dịch

Để khôi phục tại một thời điểm, hãy khôi phục theo trình tự:

  1. Khôi phục bản sao lưu đầy đủ với NORECOVERY
  2. Khôi phục bản sao lưu khác biệt với NORECOVERY (nếu có)
  3. Khôi phục bản sao lưu nhật ký giao dịch theo thứ tự với NORECOVERY
  4. Khôi phục bản sao lưu nhật ký cuối cùng với RECOVERY
-- Restore full backup
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY, REPLACE;

-- Restore first log backup
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH NORECOVERY;

-- Restore second log backup with recovery
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log2.trn'
WITH RECOVERY;
GO

9.5 Khôi phục điểm thời gian

Khôi phục cơ sở dữ liệu về thời điểm cụ thể bằng tùy chọn STOPAT:

-- Restore to specific time: January 15, 2025 at 2:30 PM
RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY, REPLACE;

RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log.trn'
WITH RECOVERY, STOPAT = '2025-01-15 14:30:00';
GO

9.6 Khôi phục bảng

SQL Server Không hỗ trợ khôi phục trực tiếp cấp độ bảng từ các tệp sao lưu. Tuy nhiên, vẫn có một số giải pháp khác.

9.6.1 Phương pháp 1: Ảnh chụp nhanh cơ sở dữ liệu (Tốt nhất cho mục đích phòng ngừa)

Ảnh chụp nhanh cơ sở dữ liệu cung cấp cách nhanh nhất để khôi phục dữ liệu bảng nếu được tạo trước khi sự cố xảy ra. Ảnh chụp nhanh là một bản sao tĩnh, chỉ đọc của cơ sở dữ liệu tại một thời điểm cụ thể.

Tạo ảnh chụp nhanh cơ sở dữ liệu:

-- Create snapshot before making changes
CREATE DATABASE ProductionDB_Snapshot_20250107
ON
( NAME = ProductionDB_Data, 
  FILENAME = 'C:\Snapshots\ProductionDB_Snapshot.ss' )
AS SNAPSHOT OF ProductionDB;
GO

Khôi phục dữ liệu bảng từ ảnh chụp nhanh:

USE ProductionDB;
GO

-- Replace entire table content
BEGIN TRANSACTION;

-- Disable constraints temporarily
ALTER TABLE dbo.Orders NOCHECK CONSTRAINT ALL;

-- Clear current data
TRUNCATE TABLE dbo.Orders;

-- Restore from snapshot
INSERT INTO dbo.Orders
SELECT * FROM ProductionDB_Snapshot_20250107.dbo.Orders;

-- Re-enable constraints
ALTER TABLE dbo.Orders CHECK CONSTRAINT ALL;

COMMIT TRANSACTION;
GO

Yêu cầu phiên bản: Ảnh chụp nhanh cơ sở dữ liệu có sẵn tại SQL Server Phiên bản doanh nghiệp (tất cả các phiên bản) và phiên bản tiêu chuẩn.tarting với SQL Server 2016SP1.

9.6.2 Phương pháp 2: Khôi phục nhịp độrarCơ sở dữ liệu y (M)ost Chung)

Phương pháp này hữu ích khi bạn cần khôi phục dữ liệu bảng sau khi xảy ra sự cố và không có bản sao lưu nào tồn tại:

  1. Khôi phục bản sao lưu về nhịp độrarcơ sở dữ liệu y
  2. Sao chép dữ liệu bảng từ temporarcơ sở dữ liệu y sang cơ sở dữ liệu hiện tại

9.7 Khôi phục trang

Khôi phục trang cho phép phục hồi các trang bị hỏng riêng lẻ mà không cần khôi phục toàn bộ cơ sở dữ liệu, giảm thiểu thời gian ngừng hoạt động. tarChỉ nhận được các trang bị lỗi. Tính năng này chỉ khả dụng trong các mô hình phục hồi Full hoặc Bulk-Logged và yêu cầu một chuỗi sao lưu nhật ký giao dịch không bị gián đoạn từ bản sao lưu trang cho đến tệp nhật ký hiện tại.

Để thực hiện khôi phục trang, trước tiên hãy xác định các trang bị hỏng, sao lưu nhật ký giao dịch (tail-log backup), khôi phục các trang cụ thể, sau đó áp dụng tất cả nhật ký giao dịch:

-- Identify damaged pages
SELECT * FROM msdb.dbo.suspect_pages
WHERE database_id = DB_ID('AdventureWorks');

-- Take tail-log backup
BACKUP LOG AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_TailLog.trn'
WITH NORECOVERY;

-- Restore damaged pages
RESTORE DATABASE AdventureWorks
PAGE = '1:123, 1:456'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY;

-- Apply transaction logs
RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH NORECOVERY;

RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_TailLog.trn'
WITH RECOVERY;
GO

Lưu ý: Chức năng khôi phục trang không khả dụng trong chế độ phục hồi đơn giản. Bạn không thể khôi phục các trang từ bảng hệ thống hoặc siêu dữ liệu nhóm tệp chính.

9.8 Khôi phục từng phần

Khôi phục từng phần (khôi phục một phần) khôi phục cơ sở dữ liệu theo từng giai đoạn ở cấp độ nhóm tệp, starViệc này giúp khôi phục dữ liệu quan trọng ngay lập tức trong khi dữ liệu ít quan trọng hơn được khôi phục trong nền. Theo mô hình khôi phục đơn giản, tất cả các nhóm tệp đọc-ghi phải được khôi phục cùng với nhóm tệp chính; chỉ các nhóm tệp chỉ đọc mới có thể được khôi phục riêng biệt. Theo mô hình khôi phục đầy đủ hoặc ghi nhật ký hàng loạt, mỗi nhóm tệp có thể được đưa vào hoạt động độc lập sau khi áp dụng nhật ký giao dịch.

Mô hình phục hồi Khôi phục hành vi từng bước
Đơn giản Nhóm tệp chính và tất cả các nhóm tệp đọc-ghi được khôi phục cùng nhau. Các nhóm tệp chỉ đọc được khôi phục riêng biệt.
Đã ghi đầy đủ/ghi hàng loạt Mỗi nhóm tập tin được khôi phục độc lập ở cấp độ nhóm tập tin.

Ví dụ về mô hình phục hồi toàn diện – khôi phục nhóm tệp chính trước để đưa cơ sở dữ liệu hoạt động trở lại, sau đó khôi phục các nhóm tệp phụ trong khi cơ sở dữ liệu vẫn đang hoạt động:

-- Stage 1: Restore primary filegroup (database comes online)
RESTORE DATABASE AdventureWorks
FILEGROUP = 'PRIMARY'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH PARTIAL, NORECOVERY;

RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH RECOVERY;
GO

-- Stage 2: Restore secondary filegroup (database stays online)
RESTORE DATABASE AdventureWorks
FILEGROUP = 'HistoricalData'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH NORECOVERY;

RESTORE LOG AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks_Log1.trn'
WITH RECOVERY;
GO

Ví dụ về mô hình phục hồi đơn giản:

-- Restore primary with all read-write filegroups
RESTORE DATABASE AdventureWorks
FILEGROUP = 'PRIMARY'
FROM DISK = 'C:\Backups\AdventureWorks_Full.bak'
WITH PARTIAL, RECOVERY;

-- Restore read-only filegroup separately
RESTORE DATABASE AdventureWorks
FILEGROUP = 'ReadOnlyArchive'
FROM DISK = 'C:\Backups\AdventureWorks_ReadOnly.bak'
WITH RECOVERY;
GO

9.9 Khôi phục bằng lệnh T-SQL

Hoàn tất tập lệnh khôi phục với việc di chuyển tệp:

RESTORE DATABASE AdventureWorks
FROM DISK = 'C:\Backups\AdventureWorks.bak'
WITH MOVE 'AdventureWorks_Data' TO 'D:\Data\AdventureWorks.mdf',
     MOVE 'AdventureWorks_Log' TO 'E:\Logs\AdventureWorks.ldf',
     REPLACE,
     STATS = 10;
GO

9.10 Xác minh tính toàn vẹn của bản sao lưu trước khi khôi phục

Kiểm tra tính hợp lệ của bản sao lưu mà không cần khôi phục:

RESTORE VERIFYONLY
FROM DISK = 'C:\Backups\AdventureWorks.bak';
GO

Lệnh này xác minh rằng tập sao lưu đã đầy đủ và có thể đọc được mà không cần khôi phục cơ sở dữ liệu.

10. SQL Server Thực tiễn tốt nhất về sao lưu

10.1 Phát triển Chiến lược Sao lưu

10.1.1 Đánh giá các yêu cầu kinh doanh

Trước khi thực hiện sao lưu, hãy đánh giá:

  • Tính quan trọng của dữ liệu: Dữ liệu này quan trọng như thế nào đối với hoạt động?
  • Thay đổi tần số: Dữ liệu thay đổi thường xuyên như thế nào?
  • Kích thước cơ sở dữ liệu: Cơ sở dữ liệu lớn đến mức nào?
  • Tài nguyên có sẵn: Có những loại dung lượng lưu trữ và băng thông nào?
  • Nhu cầu tuân thủ: Bạn phải tuân theo những quy định nào?

10.1.2 Định nghĩa RTO và RPO

Mục tiêu thời gian phục hồi (RTO): Thời gian ngừng hoạt động tối đa có thể chấp nhận được. Xác định tốc độ bạn cần khôi phục hoạt động.

Mục tiêu điểm phục hồi (RPO): Mức mất dữ liệu tối đa có thể chấp nhận được. Xác định tần suất sao lưu.

Yêu cầu RTO/RPO Chiến lược sao lưu được đề xuất
RPO: Giờ, RTO: Giờ Nhật ký giao dịch đầy đủ hàng ngày + cứ sau 1-2 giờ
RPO: Phút, RTO: Giờ Sao lưu toàn bộ + nhật ký hàng ngày cứ sau 15-30 phút
RPO: Gần bằng không, RTO: Phút Luôn có sẵn các nhóm sẵn có + Sao lưu nhật ký thường xuyên
RPO: Ngày, RTO: Ngày Toàn bộ hàng tuần + chênh lệch hàng ngày

10.2 Tạo lịch trình sao lưu

10.2.1 Khuyến nghị về tần suất

Lịch trình sao lưu điển hình cho cơ sở dữ liệu sản xuất:

  • Sao lưu đầy đủ: Hàng tuần (tối Chủ Nhật khi hoạt động thấp)
  • Sao lưu khác biệt: Hàng ngày (mỗi đêm)
  • Sao lưu nhật ký giao dịch: Cứ 15-30 phút trong giờ làm việc
  • Sao lưu chỉ sao chép: Khi cần thiết cho việc thử nghiệm hoặc phát triển

10.2.2 Cân bằng hiệu suất và bảo vệ

Hãy cân nhắc những yếu tố sau khi lên lịch:

  • Giờ ngoài giờ cao điểm: Chạy sao lưu đầy đủ trong thời gian hoạt động thấp
  • Tác động đến tài nguyên: Nén làm giảm I/O nhưng làm tăng mức sử dụng CPU
  • Băng thông mạng: Lên lịch sao lưu mạng khi lưu lượng truy cập thấp
  • Cửa sổ sao lưu: Đảm bảo sao lưu hoàn tất trước giờ làm việc

10.3 Thực hành tốt nhất về lưu trữ sao lưu

10.3.1 Lưu trữ tại chỗ so với lưu trữ ngoài chỗ

Sao lưu tại chỗ:

  • Thời gian sao lưu và khôi phục nhanh hơn
  • Hạ cost để truy cập tần số cao
  • Dễ bị ảnh hưởng bởi thiên tai cục bộ
  • Tốt nhất cho các tình huống phục hồi nhanh

Sao lưu ngoài trang web:

  • Bảo vệ khỏi các thảm họa tại địa điểm cụ thể
  • Tuân thủ các yêu cầu dự phòng về mặt địa lý
  • Thời gian khôi phục chậm hơn
  • Thiết yếu cho việc phục hồi sau thảm họa

10.3.2 Tùy chọn sao lưu đám mây

Ưu điểm của lưu trữ đám mây:

  • Lưu trữ Azure Blob: Native SQL Server tích hợp, cost-có hiệu quả cho việc truy cập không thường xuyên
  • Amazon S3: Các tầng lưu trữ linh hoạt, có độ bền cao
  • Bộ nhớ đám mây của Google: Giá cả cạnh tranh, có sẵn trên toàn cầu

10.3.3 Chính sách lưu giữ bản sao lưu

Chính sách lưu giữ mẫu:

  • Lưu bản sao lưu hàng ngày trong 7 ngày
  • Lưu trữ bản sao lưu hàng tuần trong 4 tuần
  • Lưu trữ bản sao lưu hàng tháng trong 12 tháng
  • Lưu trữ bản sao lưu hàng năm trong 7 năm (tuân thủ)

10.4 Nén và mã hóa sao lưu

Lợi ích của việc nén:

  • Giảm kích thước tệp sao lưu xuống 50-70%
  • Giảm thời gian sao lưu
  • Giảm dung lượng lưu trữ costs
  • Giảm băng thông mạng cho việc sao lưu từ xa

Thực hành mã hóa tốt nhất:

  • Luôn mã hóa các bản sao lưu có chứa dữ liệu nhạy cảm
  • Sử dụng mã hóa AES 256-bit
  • Quản lý chứng chỉ hoặc khóa an toàn
  • Ghi lại các khóa mã hóa và lưu trữ chúng riêng biệt

10.5 Kiểm tra và xác minh bản sao lưu

10.5.1 Kiểm tra khôi phục thường xuyên

Kiểm tra quy trình khôi phục hàng quý hoặc hàng tháng:

  1. Khôi phục bản sao lưu vào môi trường thử nghiệm
  2. Xác minh tính toàn vẹn và đầy đủ của dữ liệu
  3. Kiểm tra chức năng ứng dụng
  4. Thời gian khôi phục tài liệu (xác thực RTO)
  5. Xác định và giải quyết mọi vấn đề

10.5.2 Sử dụng RESTORE VERIFYONLY

Tự động xác thực sao lưu:

-- Verify backup integrity
RESTORE VERIFYONLY
FROM DISK = 'C:\Backups\AdventureWorks.bak'
WITH CHECKSUM;
GO

Chạy xác minh ngay sau khi hoàn tất sao lưu hoặc như một phần của bảo trì theo lịch trình.

10.6 Tự động hóa và giám sát sao lưu

10.6.1 SQL Server công việc đại lý

Tạo công việc sao lưu tự động:

  1. Mở rộng SQL Server Đại lýLiên kết bên ngoài trong SSMS
  2. Nhấp chuột phải Việc làm và chọn Việc làm mới
  3. Đặt tên cho công việc (ví dụ: “Sao lưu đầy đủ hàng ngày”)
  4. Thêm một Bước với lệnh sao lưu T-SQL
  5. Tạo ra một Schedule cho thời gian thực hiện
  6. Thiết lập Thông báo cho thành công/thất bại

10.6.2 Kế hoạch bảo trì

SQL Server Kế hoạch bảo trì cung cấp giao diện trực quan để tự động sao lưu:

  1. Hướng đến Quản lý -> Kế hoạch bảo trì
  2. Nhấp chuột phải và chọn Trình hướng dẫn kế hoạch bảo trì
  3. Chọn các tác vụ sao lưu để tự động hóa
  4. Cấu hình lịch trình sao lưu và các tùy chọn
  5. Thiết lập báo cáo và ghi nhật ký

10.6.3 Cảnh báo và thông báo sao lưu

Cấu hình thông báo qua email:

  • Thiết lập Cơ sở dữ liệu Thư trong SQL Server
  • Tạo cảnh báo cho các lỗi sao lưu
  • Theo dõi lịch sử công việc sao lưu
  • Gửi báo cáo tóm tắt cho người quản lý

10.7 Tài liệu và Kế hoạch Phục hồi Thảm họa

Lưu trữ tài liệu đầy đủ:

  • Lịch trình dự phòng: Khi nào và những gì được sao lưu
  • Chính sách lưu giữ: Thời gian lưu trữ bản sao lưu
  • Địa điểm lưu trữ: Nơi lưu trữ bản sao lưu
  • Khôi phục các thủ tục: Hướng dẫn phục hồi từng bước
  • Thông tin liên hệ: Nhân sự chủ chốt và nhà cung cấp
  • Kết quả thử nghiệm phục hồi: Kết quả thử nghiệm được ghi lại

11. Nâng cao SQL Server Kịch bản sao lưu

11.1 Sao lưu cơ sở dữ liệu rất lớn (VLDB)

11.1.1 Chiến lược Tệp và Nhóm Tệp

Đối với cơ sở dữ liệu có dung lượng vượt quá vài trăm gigabyte:

  • Phân tách dữ liệu chỉ đọc và dữ liệu đọc-ghi thành các nhóm tệp khác nhau
  • Sao lưu các nhóm tệp chỉ đọc không thường xuyên
  • Tập trung sao lưu thường xuyên vào các nhóm tệp đang hoạt động
  • Sử dụng bản sao lưu cấp tệp để kiểm soát chi tiết

Ví dụ về sao lưu tập tin:

-- Back up specific file
BACKUP DATABASE LargeDB 
FILE = 'LargeDB_Data1'
TO DISK = 'C:\Backups\LargeDB_File1.bak'
WITH COMPRESSION;
GO

11.1.2 Tối ưu hóa hiệu suất sao lưu

Cải thiện hiệu suất sao lưu VLDB:

  • Sao lưu theo sọc: Ghi vào nhiều tệp cùng lúc
  • Nén: Giảm yêu cầu I/O và lưu trữ
  • Nhiều thiết bị sao lưu: Song song hóa các hoạt động sao lưu
  • Lưu trữ nhanh: Sử dụng SSD để sao lưu dự phòng
  • Số lượng bộ đệm: Tăng tùy chọn BUFFERCOUNT
  • Kích thước truyền tải tối đa: Tối ưu hóa cài đặt MAXTRANSFERSIZE
-- Optimized VLDB backup
BACKUP DATABASE LargeDB
TO DISK = 'C:\Backups\LargeDB_1.bak',
   DISK = 'D:\Backups\LargeDB_2.bak',
   DISK = 'E:\Backups\LargeDB_3.bak'
WITH COMPRESSION,
     BUFFERCOUNT = 100,
     MAXTRANSFERSIZE = 4194304;
GO

11.2 Sao lưu trong Nhóm luôn sẵn sàng

Nhóm luôn sẵn sàng phân phối tải sao lưu trên các bản sao:

  • Cấu hình tùy chọn sao lưu (chính, phụ hoặc bất kỳ bản sao nào)
  • Chuyển các bản sao lưu sang các bản sao thứ cấp để giảm khối lượng công việc chính
  • Sử dụng bản sao lưu COPY_ONLY trên các bản sao thứ cấp
  • Theo dõi cài đặt ưu tiên sao lưu
-- Check backup preferences
SELECT 
    ag.name AS AvailabilityGroup,
    ar.replica_server_name,
    ar.backup_priority
FROM sys.availability_replicas ar
INNER JOIN sys.availability_groups ag ON ar.group_id = ag.group_id;
GO

11.3 Sao lưu để phản chiếu cơ sở dữ liệu

Trong các tình huống phản chiếu cơ sở dữ liệu:

  • Sao lưu cơ sở dữ liệu chính thường xuyên
  • Sao lưu nhật ký giao dịch là điều cần thiết để phản chiếu
  • Cơ sở dữ liệu phản chiếu đang ở trạng thái KHÔI PHỤC (không thể sao lưu trực tiếp)
  • Hãy cân nhắc sao lưu gương sau khi chuyển đổi dự phòng

11.4 Sao lưu vào Azure Blob Storage

SQL Server có thể sao lưu trực tiếp vào Azure Blob Storage:

  1. Tạo tài khoản lưu trữ Azure
  2. Tạo SQL Server thông tin xác thực cho xác thực Azure
  3. Sử dụng cú pháp URL cho đích sao lưu
-- Create credential for Azure
CREATE CREDENTIAL [https://mystorageaccount.blob.core.windows.net/backups]
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = 'your_SAS_token';
GO

-- Backup to Azure
BACKUP DATABASE AdventureWorks
TO URL = 'https://mystorageaccount.blob.core.windows.net/backups/AdventureWorks.bak'
WITH COMPRESSION,
     STATS = 10;
GO

11.5 Sao lưu vào URL

Lợi ích của việc sao lưu vào URL:

  • Dung lượng lưu trữ đám mây không giới hạn
  • Tự động xử lý dự phòng địa lý
  • Mô hình định giá thanh toán khi bạn di chuyển
  • Không cần dung lượng đĩa cục bộ
  • Hỗ trợ tối đa 64 URL cho mỗi bản sao lưu (phân chia)

11.6 Sao lưu theo dải để tăng hiệu suất

Sao lưu theo dải chia dữ liệu thành nhiều tệp để I/O nhanh hơn:

-- Striped backup to 4 files
BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AW_Stripe1.bak',
   DISK = 'D:\Backups\AW_Stripe2.bak',
   DISK = 'E:\Backups\AW_Stripe3.bak',
   DISK = 'F:\Backups\AW_Stripe4.bak'
WITH COMPRESSION, FORMAT;
GO

Lưu ý: Tất cả các tệp Stripe đều cần thiết để khôi phục. Thiếu bất kỳ tệp nào sẽ khiến bản sao lưu không sử dụng được.

KHAI THÁC. Xử lý sự cố SQL Server Sự cố sao lưu

12.1 Các lỗi sao lưu thường gặp và giải pháp

Lỗi: “Lỗi hệ điều hành 5: Truy cập bị từ chối”

  • Nguyên nhân: SQL Server tài khoản dịch vụ thiếu quyền
  • Giải pháp: Cấp quyền ghi cho SQL Server tài khoản dịch vụ trên thư mục sao lưu

Lỗi: “Không thể mở thiết bị sao lưu… Lỗi thiết bị hoặc thiết bị ngoại tuyến”

  • Nguyên nhân: Đường dẫn không hợp lệ hoặc chia sẻ mạng không khả dụng
  • Giải pháp: Xác minh đường dẫn tồn tại, kiểm tra kết nối mạng, đảm bảo đủ dung lượng đĩa

Lỗi: “Không đủ dung lượng trên đĩa”

  • Nguyên nhân: Không đủ dung lượng đĩa để sao lưu
  • Giải pháp: Giải phóng dung lượng đĩa, sử dụng nén, sao lưu vào vị trí khác

Lỗi: “Cơ sở dữ liệu đang được sử dụng. Cơ sở dữ liệu đang được người dùng khác sử dụng”

  • Nguyên nhân: Kết nối đang hoạt động trong quá trình khôi phục
  • Giải pháp: Sử dụng tùy chọn WITH REPLACE hoặc ngắt kết nối người dùng trước

12.2 Các vấn đề về hiệu suất sao lưu

Chẩn đoán sao lưu chậm:

  • Kiểm tra hiệu suất I/O của đĩa bằng cách sử dụng Performance Monitor
  • Theo dõi tiến trình sao lưu với tùy chọn STATS
  • Phê duyệt SQL Server nhật ký lỗi cho các nút thắt cổ chai
  • Hãy cân nhắc việc nén để giảm I/O
  • Sử dụng sao lưu theo dải trên nhiều đĩa

Truy vấn để theo dõi tiến trình sao lưu:

SELECT 
    session_id,
    command,
    percent_complete,
    CAST(((DATEDIFF(s,start_time,GetDate()))/3600) as varchar) + ' hour(s), '
    + CAST((DATEDIFF(s,start_time,GetDate())%3600)/60 as varchar) + 'min, '
    + CAST((DATEDIFF(s,start_time,GetDate())%60) as varchar) + ' sec' as running_time,
    CAST((estimated_completion_time/3600000) as varchar) + ' hour(s), '
    + CAST((estimated_completion_time %3600000)/60000 as varchar) + 'min, '
    + CAST((estimated_completion_time %60000)/1000 as varchar) + ' sec' as est_time_to_go,
    dateadd(second,estimated_completion_time/1000, getdate()) as est_completion_time
FROM sys.dm_exec_requests 
WHERE command LIKE 'BACKUP%';
GO

12.3 Vấn đề về không gian và lưu trữ

Ngăn ngừa các vấn đề lưu trữ:

  • Thực hiện chính sách lưu giữ: Tự động xóa các bản sao lưu cũ
  • Sử dụng nén: Giảm kích thước tệp sao lưu xuống 50-70%
  • Lưu trữ để lưu trữ rẻ hơn: Di chuyển các bản sao lưu cũ vào bộ nhớ lưu trữ
  • Theo dõi dung lượng đĩa: Thiết lập cảnh báo khi dung lượng đĩa thấp
  • Ước tính kích thước sao lưu: Tính toán kích thước dự kiến ​​trước khi sao lưu

Ước tính kích thước sao lưu:

-- Estimate full backup size
EXEC sp_spaceused;
GO

12.4 Các vấn đề về quyền và quyền truy cập

Quyền cần thiết để sao lưu:

  • SAO LƯU CƠ SỞ DỮ LIỆU cho phép
  • db_backupoperator vai trò thành viên
  • sysadmin vai trò máy chủ (cho tất cả các hoạt động sao lưu)

Cấp quyền sao lưu:

-- Grant backup permission to user
GRANT BACKUP DATABASE TO [BackupUser];
GRANT BACKUP LOG TO [BackupUser];
GO

-- Add user to backup operator role
ALTER ROLE db_backupoperator ADD MEMBER [BackupUser];
GO

12.5 Tệp sao lưu bị hỏng

Phát hiện và xử lý các bản sao lưu bị hỏng:

Xác minh tính toàn vẹn của bản sao lưu:

RESTORE VERIFYONLY 
FROM DISK = 'C:\Backups\AdventureWorks.bak'
WITH CHECKSUM;
GO

Bật CHECKSUM cho các bản sao lưu trong tương lai:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH CHECKSUM, INIT;
GO

Chiến lược phòng ngừa:

  • Luôn sử dụng tùy chọn CHECKSUM trong quá trình sao lưu
  • Xác minh bản sao lưu ngay sau khi tạo
  • Kiểm tra khôi phục thường xuyên
  • Lưu trữ bản sao lưu trên bộ nhớ đáng tin cậy
  • Duy trì nhiều bản sao lưu

12.6 Khôi phục dữ liệu từ các tệp sao lưu bị hỏng

Nếu các tệp sao lưu của bạn bị hỏng và bạn vẫn muốn khôi phục dữ liệu từ chúng, bạn có thể sử dụng các công cụ của bên thứ ba như DataNumen SQL Recovery, như sau:

  1. Start DataNumen SQL Recovery.
  2. Chọn tệp sao lưu bị hỏng làm tệp nguồn bằng cách thay đổi bộ lọc thành “Tất cả tệp (*.*)”:
    Chọn tệp sao lưu bị hỏng (*.bak) làm tệp nguồn cần khôi phục.
  3. Thiết lập tệp đầu ra .MDF nếu cần.
  4. Nhấp vào “Start Recovery” và làm theo hướng dẫn để khôi phục cơ sở dữ liệu.
  5. Sau quá trình phục hồi, một cơ sở dữ liệu phục hồi mới sẽ xuất hiện trong SQL Server chứa tất cả dữ liệu đã phục hồi.

Sử dụng DataNumen SQL Recovery để phục hồi dữ liệu từ các dữ liệu bị hỏng SQL Server tập tin sao lưu (*.bak).

13. SQL Server Bảo mật sao lưu

13.1 Bảo mật các tập tin sao lưu

Bảo vệ các tập tin sao lưu khỏi sự truy cập trái phép:

  • Quyền hệ thống tập tin: Hạn chế quyền truy cập chỉ dành cho quản trị viên được ủy quyền
  • An ninh mạng: Sử dụng các giao thức bảo mật để sao lưu mạng
  • Bảo mật vật lý: Lưu trữ phương tiện sao lưu ở những vị trí an toàn
  • Ghi nhật ký truy cập: Kiểm tra quyền truy cập tệp sao lưu

13.2 Tùy chọn mã hóa

SQL Server hỗ trợ mã hóa sao lưu minh bạch:

Tạo chứng chỉ để mã hóa:

-- Create master key
USE master;
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'StrongP@ssw0rd!';
GO

-- Create certificate
CREATE CERTIFICATE BackupCertificate
WITH SUBJECT = 'Database Backup Certificate',
EXPIRY_DATE = '2026-12-31';
GO

Sao lưu được mã hóa:

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks_Encrypted.bak'
WITH COMPRESSION,
     ENCRYPTION (
         ALGORITHM = AES_256,
         SERVER CERTIFICATE = BackupCertificate
     );
GO

Quan trọng: Sao lưu riêng chứng chỉ và khóa riêng. Nếu không có chúng, các bản sao lưu được mã hóa sẽ không thể khôi phục được.

-- Backup certificate
BACKUP CERTIFICATE BackupCertificate
TO FILE = 'C:\Certificates\BackupCertificate.cer'
WITH PRIVATE KEY (
    FILE = 'C:\Certificates\BackupCertificate.key',
    ENCRYPTION BY PASSWORD = 'C3rt!f!c@t3P@ss'
);
GO

13.3 Kiểm soát truy cập và quyền

Thực hiện nguyên tắc đặc quyền tối thiểu:

  • Chỉ cấp quyền sao lưu cho các tài khoản cần thiết
  • Sử dụng các tài khoản riêng biệt cho các hoạt động sao lưu và khôi phục
  • Tránh sử dụng tài khoản SA để sao lưu
  • Kiểm tra thường xuyên các quyền sao lưu
  • Xóa quyền khi không còn cần thiết

13.4 Cân nhắc về tuân thủ

Đáp ứng các yêu cầu về quy định:

  • GDPR: Mã hóa các bản sao lưu chứa dữ liệu cá nhân, thực hiện các chính sách lưu giữ
  • HIPAA: Mã hóa PHI trong bản sao lưu, kiểm soát quyền truy cập, duy trì dấu vết kiểm toán
  • PCI DSS: Mã hóa dữ liệu sao lưu của chủ thẻ, lưu trữ sao lưu an toàn
  • SOX: Duy trì tính toàn vẹn của bản sao lưu, chính sách lưu giữ tài liệu

14. Giám sát và duy trì hoạt động sao lưu

14.1 Theo dõi lịch sử sao lưu

SQL Server lưu trữ lịch sử sao lưu trong cơ sở dữ liệu msdb:

-- View recent backup history
SELECT 
    bks.database_name,
    bks.backup_start_date,
    bks.backup_finish_date,
    CASE bks.type
        WHEN 'D' THEN 'Full'
        WHEN 'I' THEN 'Differential'
        WHEN 'L' THEN 'Log'
        ELSE 'Other'
    END AS backup_type,
    bks.backup_size / 1024 / 1024 AS backup_size_mb,
    bkmf.physical_device_name
FROM msdb.dbo.backupset bks
INNER JOIN msdb.dbo.backupmediafamily bkmf ON bks.media_set_id = bkmf.media_set_id
WHERE bks.backup_start_date >= DATEADD(DAY, -7, GETDATE())
ORDER BY bks.backup_start_date DESC;
GO

Tìm cơ sở dữ liệu không có bản sao lưu gần đây:

SELECT 
    d.name AS database_name,
    MAX(bs.backup_finish_date) AS last_backup_date,
    DATEDIFF(DAY, MAX(bs.backup_finish_date), GETDATE()) AS days_since_last_backup
FROM sys.databases d
LEFT JOIN msdb.dbo.backupset bs ON d.name = bs.database_name
WHERE d.database_id > 4  -- Exclude system databases
GROUP BY d.name
HAVING MAX(bs.backup_finish_date) < DATEADD(DAY, -7, GETDATE())
    OR MAX(bs.backup_finish_date) IS NULL
ORDER BY last_backup_date;
GO

14.2 Sử dụng SQL Server Báo Cáo

SQL Server Management Studio bao gồm các báo cáo sao lưu tích hợp sẵn:

  1. Nhấp chuột phải vào cơ sở dữ liệu trong Object Explorer
  2. Chọn Báo Cáo -> Báo cáo chuẩn
  3. Chọn từ các báo cáo có sẵn:
    • Sự kiện sao lưu và khôi phục
    • Tất cả các bản sao lưu
    • Nhật ký giao dịch Trạng thái vận chuyển

14.3 Công cụ giám sát của bên thứ ba

Giải pháp giám sát thương mại:

  • SQL Sentry: Giám sát và cảnh báo toàn diện
  • Trình giám sát SQL Redgate: Giám sát và chẩn đoán thời gian thựcostics
  • Trình phân tích hiệu suất cơ sở dữ liệu SolarWinds: Giám sát hiệu suất và sao lưu
  • Chẩn đoán SQL IderaostQuản lý ic: Xác thực và cảnh báo sao lưu

14.4 Kiểm tra tình trạng dự phòng

Tạo quy trình kiểm tra sức khỏe:

-- Backup health check procedure
CREATE PROCEDURE sp_BackupHealthCheck
AS
BEGIN
    -- Check for databases without recent full backup
    SELECT 
        'Missing Recent Full Backup' AS issue,
        d.name AS database_name,
        ISNULL(CAST(MAX(bs.backup_finish_date) AS VARCHAR), 'Never') AS last_backup
    FROM sys.databases d
    LEFT JOIN msdb.dbo.backupset bs 
        ON d.name = bs.database_name AND bs.type = 'D'
    WHERE d.database_id > 4
    GROUP BY d.name
    HAVING MAX(bs.backup_finish_date) < DATEADD(DAY, -7, GETDATE()) OR MAX(bs.backup_finish_date) IS NULL; -- Check for failed backup jobs SELECT 'Failed Backup Job' AS issue, j.name AS job_name, jh.run_date, jh.run_time, jh.message FROM msdb.dbo.sysjobs j INNER JOIN msdb.dbo.sysjobhistory jh ON j.job_id = jh.job_id WHERE jh.run_status = 0 -- Failed AND jh.step_id = 0 AND jh.run_date >= CONVERT(INT, CONVERT(VARCHAR, GETDATE()-7, 112))
        AND j.name LIKE '%backup%';
END
GO

15. SQL Server Câu hỏi thường gặp về sao lưu

15.1 Tôi nên sao lưu bao lâu một lần? SQL Server?

Tần suất sao lưu phụ thuộc vào Mục tiêu điểm khôi phục (RPO) của bạn:

  • Cơ sở dữ liệu sản xuất quan trọng: Toàn bộ hàng tuần, chênh lệch hàng ngày, ghi nhật ký cứ sau 15-30 phút
  • Cơ sở dữ liệu sản xuất tiêu chuẩn: Toàn bộ hàng tuần, chênh lệch hàng ngày, ghi nhật ký mỗi 1-2 giờ
  • Cơ sở dữ liệu phát triển: Toàn bộ hàng ngày hoặc hàng tuần
  • Cơ sở dữ liệu chỉ đọc: Đầy đủ sau mỗi lần thay đổi dữ liệu

15.2 Sự khác biệt giữa sao lưu đầy đủ và sao lưu khác biệt là gì?

Sao lưu toàn bộ sẽ sao chép toàn bộ cơ sở dữ liệu, trong khi sao lưu khác biệt chỉ ghi lại những thay đổi kể từ lần sao lưu toàn bộ gần nhất. Sao lưu khác biệt nhỏ gọn hơn và nhanh hơn nhưng cần bản sao lưu toàn bộ cơ sở dữ liệu để khôi phục.

15.3 Tôi có thể sao lưu không? SQL Server Trong khi nó đang chạy?

Có, SQL Server hỗ trợ sao lưu trực tuyến. Người dùng có thể tiếp tục làm việc trong khi sao lưu. SQL Server sử dụng nhật ký giao dịch để duy trì tính nhất quán, đảm bảo các bản sao lưu vẫn hợp lệ ngay cả khi có nhiều sửa đổi đồng thời.

15.4 Mất bao lâu? SQL Server Sao lưu?

Thời gian sao lưu thay đổi tùy theo:

  • Kích thước cơ sở dữ liệu: Cơ sở dữ liệu lớn hơn mất nhiều thời gian hơn
  • Loại sao lưu: Sao lưu đầy đủ mất nhiều thời gian nhất
  • Nén: Có thể tăng thời gian CPU nhưng giảm thời lượng tổng thể
  • Tốc độ lưu trữ: SSD nhanh hơn đáng kể so với HDD
  • Tải máy chủ: Hoạt động cao hơn làm chậm quá trình sao lưu

Phạm vi điển hình: Cơ sở dữ liệu 10GB có thể mất 5-15 phút để sao lưu đầy đủ với tính năng nén trên phần cứng hiện đại.

15.5 Tôi nên lưu trữ ở đâu SQL Server Sao lưu?

Thực hành tốt nhất: Thực hiện theo quy tắc 3-2-1:

  • 3 bản sao dữ liệu của bạn
  • 2 các loại lưu trữ khác nhau (ví dụ: đĩa và băng/đám mây)
  • 1 sao chép ngoài trang web

Các địa điểm được đề xuất:

  • Đĩa cục bộ để phục hồi nhanh chóng
  • Lưu trữ mạng để quản lý tập trung
  • Lưu trữ đám mây (Azure, AWS) để phục hồi sau thảm họa

15.6 Phần mở rộng tệp .bak là gì?

Phần mở rộng .bak là phần mở rộng tệp mặc định cho SQL Server các tập tin sao lưu. Đó là một quy ước, không phải là một yêu cầu – SQL Server Sao lưu hoạt động với bất kỳ phần mở rộng tệp nào. Tuy nhiên, việc sử dụng .bak giúp dễ dàng nhận dạng tệp sao lưu và là thông lệ tiêu chuẩn trong ngành.

15.7 Cách sao lưu SQL Server vào ổ đĩa mạng?

Để sao lưu vào ổ đĩa mạng:

  1. Đảm bảo SQL Server tài khoản dịch vụ có quyền ghi trên chia sẻ mạng
  2. Sử dụng đường dẫn UNC trong lệnh sao lưu: \\ServerName\ShareName\BackupFile.bak
  3. Kiểm tra kết nối trước khi lên lịch sao lưu tự động
BACKUP DATABASE AdventureWorks
TO DISK = '\\BackupServer\SQLBackups\AdventureWorks.bak'
WITH COMPRESSION, INIT;
GO

15.8 Tôi có thể nén không? SQL Server Sao lưu?

Có, SQL Server hỗ trợ nén sao lưu gốc (Phiên bản Doanh nghiệp hoặc Phiên bản Tiêu chuẩn)tarđiều SQL Server 2016 SP1). Nén thường làm giảm kích thước sao lưu xuống 50-70% và thường làm giảm thời gian sao lưu bằng cách giảm I/O, mặc dù nó làm tăng mức sử dụng CPU.

BACKUP DATABASE AdventureWorks
TO DISK = 'C:\Backups\AdventureWorks.bak'
WITH COMPRESSION;
GO

16. Phần kết luận

16.1 điểm chính

Hiệu quả SQL Server Chiến lược sao lưu bảo vệ dữ liệu của bạn và đảm bảo tính liên tục của hoạt động kinh doanh. Hãy ghi nhớ những điểm quan trọng sau:

  • Hiểu các loại sao lưu: Chọn loại sao lưu phù hợp (đầy đủ, khác biệt, nhật ký giao dịch) dựa trên yêu cầu phục hồi của bạn
  • Chọn mô hình phục hồi phù hợp: Phục hồi hoàn toàn dữ liệu quan trọng, đơn giản cho cơ sở dữ liệu phát triển
  • Triển khai lịch trình sao lưu: Sao lưu đầy đủ thường xuyên kết hợp với sao lưu khác biệt và sao lưu nhật ký giúp giảm thiểu mất dữ liệu
  • Kiểm tra quy trình khôi phục: Bản sao lưu chỉ có giá trị nếu chúng có thể được khôi phục thành công
  • Tự động hóa và giám sát: Sử dụng SQL Server Đại lý, kế hoạch bảo trì và công cụ giám sát
  • Sao lưu an toàn: Mã hóa dữ liệu nhạy cảm và kiểm soát quyền truy cập vào các tệp sao lưu
  • Lưu trữ các bản sao bên ngoài: Bảo vệ chống lại thảm họa trên toàn trang web bằng lưu trữ đám mây hoặc từ xa
  • Tài liệu mọi thứ: Duy trì tài liệu rõ ràng về quy trình sao lưu và phục hồi

16.2 Các bước tiếp theo và tài nguyên

Để cải thiện SQL Server triển khai sao lưu:

  • Đánh giá chiến lược sao lưu hiện tại của bạn so với các phương pháp hay nhất
  • Tính toán yêu cầu RTO và RPO của bạn
  • Kiểm tra các thủ tục khôi phục trên các hệ thống không sản xuất
  • Xem xét và cập nhật lịch trình sao lưu thường xuyên
  • Triển khai giám sát và cảnh báo tự động
  • Đào tạo các thành viên trong nhóm về quy trình khôi phục

Tài nguyên bổ sung:

  • microsoft SQL Server Tài liệu: Hướng dẫn sao lưu và khôi phục chính thức
  • SQL Server diễn đàn cộng đồng sao lưu: Chia sẻ kinh nghiệm và giải pháp
  • Chứng chỉ chuyên môn: Microsoft Certified: Azure Database Administrator Associate

16.3 Công cụ và giải pháp được đề xuất

Dựa trên các tình huống khác nhau:

Tiểu thương:

  • Native SQL Server sao lưu theo lịch trình SQL Server Việc làm đại lý
  • SQLBackupAndFTP để tích hợp đám mây
  • Sao lưu Azure cho SQL Server

Doanh nghiệp vừa:

  • SQL Server Kế hoạch bảo trì
  • Các công cụ của bên thứ ba như Redgate SQL Backup Pro
  • Veeam Backup cho SQL Server

Doanh nghiệp lớn:

  • Quest LiteSpeed ​​cho khả năng nén tối đa
  • Commvault hoặc Veritas NetBackup để quản lý sao lưu doanh nghiệp
  • Nhóm khả dụng luôn hoạt động cho tính khả dụng cao

SQL Server Sao lưu là nền tảng cơ bản cho việc quản trị cơ sở dữ liệu. Với việc lập kế hoạch, triển khai và kiểm tra phù hợp, bạn có thể đảm bảo dữ liệu của mình luôn được bảo vệ và có thể phục hồi khi cần.tart thực hiện những biện pháp tốt nhất này ngay hôm nay để bảo vệ bạn SQL Server cơ sở dữ liệu.


Lưu ý

Nguyên Sinh là quản trị viên cơ sở dữ liệu cao cấp (DBA) với hơn 10 năm kinh nghiệm trong SQL Server môi trường và quản lý cơ sở dữ liệu doanh nghiệp. Ông đã giải quyết thành công hàng trăm tình huống khôi phục cơ sở dữ liệu trên khắp các tổ chức dịch vụ tài chính, chăm sóc sức khỏe và sản xuất.

Yuan chuyên về SQL Server Ông có kinh nghiệm thực tế sâu rộng trong việc quản lý cơ sở dữ liệu hàng terabyte, triển khai các Nhóm Luôn Sẵn Sàng (Always On Availability Groups) và phát triển các chiến lược sao lưu và phục hồi tự động cho các hệ thống kinh doanh quan trọng.

Nhờ chuyên môn kỹ thuật và phương pháp thực tế của mình, Yuan tập trung vào việc tạo ra các hướng dẫn toàn diện giúp quản trị viên cơ sở dữ liệu và chuyên gia CNTT giải quyết các vấn đề phức tạp SQL Server thách thức một cách hiệu quả. Anh ấy luôn cập nhật những thông tin mới nhất SQL Server phát hành và công nghệ cơ sở dữ liệu đang phát triển của Microsoft, thường xuyên kiểm tra các tình huống phục hồi để đảm bảo các khuyến nghị của ông phản ánh những phương pháp hay nhất trong thực tế.

Có thắc mắc về SQL Server phục hồi hoặc cần thêm hướng dẫn khắc phục sự cố cơ sở dữ liệu? Yuan hoan nghênh phản hồi và đề xuất để cải thiện các nguồn lực kỹ thuật này.

Chia sẻ ngay bây giờ: