如何將 SQL Server RDS 備份到 S3 存儲桶

管理 SQL Server RDS 實例的備份對於確保數據可用性和災難恢復至關重要。AWS 提供了多種工具來促進此過程,包括將 SQL Server RDS 數據庫直接備份到 Amazon S3 的命令。本文將指導您完成執行備份和恢復所需的命令和配置。

將 SQL Server RDS 備份到 S3

創建備份的主要儲存過程是 msdb.dbo.rds_backup_database。此命令允許您指定要備份的數據庫以及備份將存儲的 S3 位置

包參數

儲存過程支持幾個參數,這些參數分為 必需可選

必需參數

  • @source_db_name: 要備份的數據庫名稱。
  • @s3_arn_to_backup_to: 指示用於備份的 Amazon S3 存儲桶的 ARN,包括備份文件名。
    • 該文件可以具有任何擴展名,但 .bak 是常用的。

可選參數

  • @kms_master_key_arn

    • 用於加密備份的對稱加密 KMS 金鑰的 ARN。
    • 不能使用默認加密金鑰。使用默認金鑰將導致備份失敗。
    • 如果不指定 KMS 金鑰,則備份文件將不會被加密。
    • 僅支持對稱 KMS 金鑰。
  • @overwrite_s3_backup_file

    • 確定是否覆蓋現有文件。
    • 0(默認):不覆蓋現有文件。如果文件已存在,則返回錯誤。
    • 1:覆蓋現有文件,即使它不是備份文件。
  • @type

    • 指定備份類型。
    • FULL(默認):執行完整備份。
    • DIFFERENTIAL:基於上一次完整備份創建差異備份。
    • 重要:為了使差異備份正常工作,在上一次完整備份和差異備份之間不應存在快照。如果存在快照,請在差異備份之前執行另一次完整備份。以下是檢查上一次完整備份的示例查詢:

      MS SQL

       

  • @number_of_files

    • 指定備份將被分割的檔案(塊)數量。最大值:10。
    • 如果設置為 1 或省略,則會創建一個單一的備份檔案。
    • 多檔備份必須在檔名中使用單個 *,該符號在生成過程中將被替換為字母數字字符串。例如:
      • 輸入:backup*.bak@number_of_files = 4
      • 輸出:backup1-of-4.bakbackup2-of-4.bakbackup3-of-4.bakbackup4-of-4.bak
  • @block_size

    • 指定備份操作的物理區塊大小(以位元組為單位)。
    • 有效值:5121024204840968192163843276865536
  • @max_transfer_size

    • 表示每個 I/O 操作傳輸的最大數據量(以位元組為單位)。
    • 有效值:64 KB 的倍數,最多可達 4194304 位元組(4 MB)。
  • @buffer_count

    • 在備份過程中使用的 I/O 緩衝區總數。

指令語法

MS SQL

範例:對 S3 進行完整備份

MS SQL

配置備份壓縮

為節省空間並減少傳輸時間,您可以使用 rdsadmin 命令為 SQL Server RDS 備份啟用壓縮。

啟用壓縮

MS SQL

 

停用壓縮

MS SQL

注意SQL Express不支援備份壓縮;在這種情況下啟用它將導致備份失敗。

執行本機 SQL Server 備份

Amazon RDS還支援本機 SQL Server 備份功能。以下是備份和還原操作的命令。

備份命令

完整備份命令

MS SQL

差異備份命令

MS SQL

 

還原命令

差異還原命令

MS SQL

差異還原命令

MS SQL

 

監控和管理備份任務

檢查任務狀態:

MS SQL

取消備份任務:

MS SQL

考慮事項

  • 確保在命令中使用的 S3 存儲桶具備必要的權限,以允許 RDS 實例訪問。
  • 對於敏感數據,您可以使用 AWS KMS 主金鑰在將其存儲在 S3 之前對備份進行加密,方法是指定@kms_master_key_arn

其他資源

有關更詳細的示例和信息,請參閱官方AWS SQL Server 備份文件

本指南為您提供了管理使用Amazon S3的SQL Server RDS備份的堅實基礎。如需進一步的高級配置,請參考AWS文檔,或者嘗試使用提供的參數來優化備份過程,以符合您的環境。

Source:
https://dzone.com/articles/how-to-backup-sql-server-rds-to-an-s3-bucket