SQL Server 2022 – Đã đến lúc xem xét lại chiến lược sao lưu và phục hồi của bạn

Microsoft SQL Server 2022 hiện đã có bản xem trước công khai và được tích hợp nhiều tính năng mới tuyệt vời. Một trong những tính năng thú vị nhất là tính năng sao lưu ảnh chụp nhanh Transact-SQL . Đây là một viên ngọc có thể biến đổi chiến lược sao lưu và phục hồi của bạn và tăng tốc quá trình phục hồi cơ sở dữ liệu của bạn!

Sức mạnh của ảnh chụp nhanh

Tại Dell Technologies, chúng tôi đã biết đến sức mạnh của ảnh chụp nhanh lưu trữ trong hơn một thập kỷ. Ảnh chụp nhanh lưu trữ là một tính năng cơ bản trong Dell PowerStore và phần còn lại của danh mục lưu trữ Dell. Chúng là một tính năng mạnh mẽ cho phép tạo và khôi phục các bản sao khối lượng tại một thời điểm trong vài giây hoặc ít hơn, bất kể kích thước. Vì bộ lưu trữ đang thực hiện công việc, nên không có chi phí sao chép dữ liệu sang thiết bị hoặc vị trí khác. Hoạt động siêu dữ liệu này được thực hiện trên bộ lưu trữ không chỉ nhanh mà còn tiết kiệm không gian. Thay vì lưu trữ một bản sao lưu đầy đủ, chỉ lưu trữ delta và sau đó hợp nhất với hình ảnh cơ sở để tạo thành một bản sao tại một thời điểm.

Bắt đầu từ SQL Server 2019, SQL Server cũng được hỗ trợ trên Linux và các nền tảng container như Kubernetes, ngoài Windows. Kubernetes đã nhận ra và nắm bắt sức mạnh của ảnh chụp nhanh dựa trên lưu trữ và cung cấp hỗ trợ cách đây vài năm. Để quản lý các tập dữ liệu lớn một cách nhanh chóng và hiệu quả, chúng rất khó bị đánh bại.

Thiếu hỗ trợ đầy đủ của SQL Server

Thật không may, trước SQL Server 2022, có những hạn chế về cách sử dụng ảnh chụp nhanh dựa trên lưu trữ để khôi phục cơ sở dữ liệu. Trước SQL Server 2022, không có phương pháp nào được hỗ trợ để áp dụng bản sao lưu nhật ký giao dịch cho các bản sao này mà không cần viết mã Giao diện thiết bị ảo (VDI) SQL Server tùy chỉnh. Điều này hạn chế việc sử dụng ảnh chụp nhanh lưu trữ đối với hầu hết khách hàng sử dụng bản sao lưu nhật ký giao dịch như một phần trong chiến lược khôi phục của họ. Do đó, các trường hợp sử dụng phổ biến nhất là sử dụng lại các bản sao cơ sở dữ liệu để báo cáo và các trường hợp sử dụng thử nghiệm/phát triển.

Ngoài ra, trong các phiên bản SQL Server cũ hơn SQL Server 2022, công nghệ Volume Shadow Copy Service (VSS) được sử dụng để thực hiện các bản sao lưu này chỉ được cung cấp trên Windows. Linux và các triển khai dựa trên container không được hỗ trợ.

SQL Server 2022 giải quyết được vấn đề này!

Tính năng sao lưu ảnh chụp nhanh Transact-SQL (T-SQL) của SQL Server 2022 giải quyết những vấn đề này và cho phép ảnh chụp nhanh lưu trữ trở thành giải pháp hàng đầu cho việc sao lưu và phục hồi SQL Server.

Có các tùy chọn mới được thêm vào lệnh T-SQL ALTER DATABASE, BACKUP và RESTORE cho phép tạm dừng một cơ sở dữ liệu người dùng hoặc tất cả các cơ sở dữ liệu người dùng, tạo cơ hội chụp ảnh lưu trữ mà không cần VSS. Hiện có một phương pháp được hỗ trợ trên tất cả các nền tảng SQL Server 2022.

Sao lưu ảnh chụp nhanh T-SQL được hỗ trợ với các kịch bản phục hồi đầy đủ. Chúng có thể được sử dụng làm cơ sở cho tất cả các kịch bản phục hồi phổ biến, chẳng hạn như áp dụng sao lưu khác biệt và nhật ký. Chúng cũng có thể được sử dụng để gieo hạt nhóm khả dụng để phục hồi nhóm khả dụng nhanh chóng.

Đã đến lúc phải suy nghĩ lại

Cơ sở dữ liệu SQL Server có thể rất lớn và có mục tiêu thời gian phục hồi (RTO) và mục tiêu điểm phục hồi (RPO) nghiêm ngặt. Ảnh chụp nhanh PowerStore có thể được thực hiện và khôi phục trong vài giây, trong khi sao lưu và phục hồi cơ sở dữ liệu truyền thống có thể mất hàng giờ. Bây giờ chúng được hỗ trợ đầy đủ trong các tình huống phục hồi phổ biến, sao lưu ảnh chụp nhanh T-SQL và ảnh chụp nhanh PowerStore có thể được sử dụng làm tuyến phòng thủ đầu tiên trong việc thực hiện khôi phục cơ sở dữ liệu và tăng tốc quá trình từ nhiều giờ xuống còn vài giây. Đối với khách hàng lưu trữ Dell, nhiều sản phẩm lưu trữ Dell mà bạn sở hữu hiện nay hỗ trợ khả năng này vì không yêu cầu nhà cung cấp VSS hoặc trình điều khiển lưu trữ. Các hoạt động sao lưu và phục hồi có thể được tự động hóa hoàn toàn bằng cách sử dụng các tiện ích dòng lệnh lưu trữ Dell và tích hợp REST API.

Ví dụ, tiện ích Dell PowerStore CLI (PSTCLI) cho phép tạo tập lệnh mạnh mẽ cho các hoạt động lưu trữ PowerStore như sao lưu và khôi phục ảnh chụp nhanh.

Ảnh chụp nhanh dựa trên lưu trữ không nhằm mục đích thay thế tất cả các bản sao lưu cơ sở dữ liệu truyền thống. Sao lưu ngoài thiết bị và/hoặc ngoài trang web vẫn là biện pháp tốt nhất để bảo vệ dữ liệu đầy đủ. Tuy nhiên, hầu hết các hoạt động sao lưu và khôi phục không yêu cầu sao lưu ngoài thiết bị hoặc ngoài trang web và đây là lúc hiệu quả về thời gian và không gian phát huy tác dụng. Ảnh chụp nhanh dựa trên lưu trữ đẩy nhanh phần lớn các tình huống sao lưu và khôi phục mà không ảnh hưởng đến các bản sao lưu cơ sở dữ liệu truyền thống.

Một ví dụ nhanh về PowerStore

Hỗ trợ

Quy trình làm việc chung cho việc sao lưu ảnh chụp nhanh T-SQL là:

  1. Phát hành lệnh T-SQL ALTER DATABASE để tạm dừng cơ sở dữ liệu:
    ALTER DATABASE SnapTest SET SUSPEND_FOR_SNAPSHOT_BACKUP = ON
  2. Thực hiện các hoạt động chụp nhanh lưu trữ. Đối với PowerStore, đây là một lệnh duy nhất:
    pstcli -d MyPowerStoreMgmtAddress -u UserName -p Password volume_group -name SQLDemo -name SnapTest-Snapshot-2208290922 -description “s:\sql\SnapTest_SQLBackupFull.bkm”
  3. Phát hành lệnh T-SQL BACKUP DATABASE với tùy chọn METADATA_ONLY để ghi lại siêu dữ liệu và tiếp tục cơ sở dữ liệu:
    BACKUP DATABASE SnapTest TO DISK = ‘s:\sql\SnapTest_SQLBackupFull.bkm’ WITH METADATA_ONLY,COPY_ONLY,NOFORMAT, MEDIANAME=’Dell PowerStore PS-13′,MEDIADESCRIPTION=’nhóm ổ đĩa: SQLDemo’,NAME=’SnapTest-Snapshot-2208290922′,DESCRIPTION=’ f85f5a13-d820-4e56-9b9c-a3668d3d7e5e ‘ ;

Vì Microsoft đã ghi lại đầy đủ các hoạt động sao lưu và khôi phục SQL Server, chúng ta hãy tập trung vào bước 2 ở trên, lệnh PowerStore CLI. Điều quan trọng là phải hiểu rằng khi chụp ảnh nhanh lưu trữ PowerStore, ảnh chụp nhanh sẽ được chụp ở cấp độ ổ đĩa. Do đó, tất cả các ổ đĩa chứa dữ liệu và tệp nhật ký cho cơ sở dữ liệu của bạn đều yêu cầu ảnh chụp nhanh nhất quán tại một thời điểm. Thực hành tốt nhất của SQL Server đối với PowerStore là đặt dữ liệu SQL Server và các ổ đĩa nhật ký liên quan vào một nhóm ổ đĩa PowerStore. Điều này cho phép bảo vệ đơn giản và nhất quán trên tất cả các ổ đĩa trong nhóm ổ đĩa. Trong lệnh PSTCLI ở trên, ảnh chụp nhanh PowerStore được chụp trên một nhóm ổ đĩa chứa tất cả các ổ đĩa cho cơ sở dữ liệu cùng một lúc.

Ngoài ra, một vài mẹo để làm cho quy trình dễ dàng hơn một chút. Ảnh chụp nhanh PowerStore và tệp siêu dữ liệu sao lưu cần được sử dụng như một bộ. Phiên bản phù hợp là bắt buộc đối với từng tệp vì tệp siêu dữ liệu chứa thông tin như số thứ tự nhật ký SQL Server (LSN) cần khớp với các tệp cơ sở dữ liệu. Do đó, tôi đang sử dụng một số trường trong lệnh ảnh chụp nhanh PowerStore và SQL Server để lưu trữ thông tin về cách liên kết thông tin này với nhau:

  • Khi ảnh chụp nhanh PowerStore được thực hiện ở bước 2 ở trên, trong trường tên, tôi lưu trữ tên cơ sở dữ liệu và ngày giờ chụp ảnh nhanh. Tôi lưu trữ đường dẫn đến tệp siêu dữ liệu SQL Server trong trường mô tả. 

  • Ở bước 3, trong lệnh BACKUP DATABASE, tôi đặt tên thân thiện với PowerStore vào trường MEDIANAME, tên nhóm ổ đĩa PowerStore vào trường NAME và ID nhóm ổ đĩa PowerStore vào trường DESCRIPTION. Thao tác này sẽ điền thông tin cần thiết vào tệp siêu dữ liệu để định vị ảnh chụp nhanh PowerStore trên thiết bị PowerStore.
  • Lệnh T-SQL RESTORE HEADERONLY sẽ hiển thị thông tin được thêm vào lệnh BACKUP DATABASE cũng như tên SQL Server và tên cơ sở dữ liệu.

Sự hồi phục

Quy trình chung cho quá trình phục hồi cơ bản là:

  1. Xóa cơ sở dữ liệu hiện có.
  2. Tắt các ổ đĩa cơ sở dữ liệu. Có thể thực hiện việc này thông qua PowerShell, như sau, trong đó X là ký tự ổ đĩa của ổ đĩa cần tắt:
    Set-Disk (Get-Partition -DriveLetter X | Get-Disk | Select number -ExpandProperty number) -isOffline $true
  3. Khôi phục ảnh chụp nhanh cơ sở dữ liệu bằng PowerStore PSTCLI:
    1. Liệt kê các nhóm ổ đĩa.
      pstcli -d MyPowerStoreMgmtAddress -u UserName -p Password! volume_group show
    2. Khôi phục nhóm ổ đĩa trong đó f85f5a13-d820-4e56-9b9c-a3668d3d7e5e là ID nhóm ổ đĩa từ trên.
      pstcli -d MyPowerStoreMgmtAddress -u UserName -p Password! volume_group -name SQLServerVolumeGroup restore -from_snap_id f85f5a13-d820-4e56-9b9c-a3668d3d7e5e 
  4. Trực tuyến các khối lượng cơ sở dữ liệu. Lệnh PowerShell sau sẽ trực tuyến tất cả các đĩa ngoại tuyến:
    Get-Disk | Where-Object IsOffline -Eq $True | Select Number | Set-Disk -isOffline $False
  5. Phát hành lệnh T-SQL RESTORE DATABASE tham chiếu đến tệp siêu dữ liệu sao lưu, sử dụng tùy chọn NORECOVERY nếu áp dụng sao lưu nhật ký:
    RESTORE DATABASE SnapTest FROM DISK = ‘s:\sql\SnapTest_PowerStore_PS13_SQLBackup.bkm’ WITH FILE=1,METADATA_ONLY,NORECOVERY
  6. Nếu có thể, hãy áp dụng bản sao lưu nhật ký cơ sở dữ liệu:
    RESTORE LOG SnapTest FROM DISK = ‘s:\sql\SnapTest20220829031756.trn’ WITH RECOVERY

Các mục khác cần lưu ý

Một số mục khác đáng thảo luận là COPY_ONLY và sao lưu khác biệt. Bạn có thể đã nhận thấy ở trên rằng lệnh BACKUP DATABASE chứa tham số COPY_ONLY, nghĩa là các bản sao lưu này sẽ không can thiệp vào quy trình sao lưu và khôi phục khác mà bạn có thể đã áp dụng.

Điều này cũng có nghĩa là bạn không thể áp dụng sao lưu khác biệt cho các bản sao lưu ảnh chụp nhanh T-SQL này. Tôi không chắc tại sao người ta lại muốn làm như vậy; Tôi sẽ chỉ cần thực hiện một bản sao lưu ảnh chụp nhanh T-SQL khác với PowerStore cùng lúc, sử dụng bản sao lưu đó làm cơ sở phục hồi và đẩy nhanh quá trình! Tôi chắc chắn có những lý do chính đáng để muốn làm như vậy và nếu vậy, bạn không cần sử dụng tùy chọn COPY_ONLY. Chỉ cần lưu ý rằng bạn có thể ảnh hưởng đến các hoạt động sao lưu và khôi phục khác, vì vậy hãy chắc chắn làm bài tập về nhà trước!