將 SQL Server 資料庫備份到 Cloud Storage 值區


本教學課程說明如何將 Microsoft SQL Server 2022 資料庫直接備份至 Cloud Storage 值區,並在稍後還原。SQL Server 2022 推出的 SQL Server 備份原生功能,提供順暢且經濟實惠的策略,可進行雲端災難復原和資料遷移。

SQL Server 備份原生功能會運用 BACKUP TO URLRESTORE FROM URL 指令,支援與 S3 相容的物件儲存空間,包括 Cloud Storage。這樣就不需要中繼本機儲存空間,可簡化備份工作流程並減少作業負擔。

本教學課程適用於資料庫管理員和工程師。

目標

本教學課程將說明如何完成下列工作,以達成目標:

  • 建立新的 Cloud Storage bucket
  • 設定 SQL Server 連接器
  • 備份資料庫
  • 從備份還原資料庫

費用

在本文件中,您會使用 Google Cloud的下列計費元件:

如要根據預測用量估算費用,請使用 Pricing Calculator

初次使用 Google Cloud 的使用者可能符合免費試用資格。

完成本文所述工作後,您可以刪除已建立的資源,避免繼續計費。詳情請參閱清除所用資源一節。

事前準備

  1. 本教學課程需要 Google Cloud 專案。您可以建立新專案,或選取已建立的專案:

    1. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

      Go to project selector

    2. Make sure that billing is enabled for your Google Cloud project.

    3. In the Google Cloud console, activate Cloud Shell.

      Activate Cloud Shell

  2. 確認已安裝並執行 Microsoft SQL Server 2022 以上版本。

  3. 請確認 Google Cloud 專案和 SQL Server 都具備執行備份和還原作業的必要權限。

  4. 請確認與存取金鑰相關聯的使用者或服務帳戶,具備在 Cloud Storage bucket 中建立及查看物件的權限。

  5. 請確認用於執行備份的 SQL Server 使用者帳戶具備資料庫備份和記錄備份權限

建立 Cloud Storage 值區

您可以使用 Google Cloud 控制台或 gcloud storage 指令建立 Cloud Storage bucket

如要使用 gcloud storage 指令建立 Cloud Storage bucket,請按照下列步驟操作。

  1. 選取 Google Cloud 專案。

    gcloud config set project PROJECT_ID
    
  2. 建立 bucket。 如要建立 bucket,請執行下列 gcloud storage buckets create 指令。

      gcloud storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION
    

    更改下列內容:

  • BUCKET_NAME:為值區指定不重複的名稱。
  • BUCKET_LOCATION:值區的位置。

設定 S3 互通性並建立存取金鑰

如要允許 SQL Server 使用 S3 協定與 Cloud Storage 通訊,請按照下列步驟啟用互通性並產生存取金鑰:

  1. 前往 Google Cloud 控制台中的 Cloud Storage 設定。

    前往 Cloud Storage 設定

  2. 選取 [Interoperability] (互通性) 分頁標籤。

  3. 在「您使用者帳戶的存取金鑰」下方,按一下「建立金鑰」

    儲存空間存取金鑰

  4. 請妥善儲存產生的存取金鑰密鑰。在下一步中將會用到。

在正式環境中,建議使用服務帳戶雜湊式訊息驗證碼 (HMAC) 金鑰,以提升安全性和管理效率。

在 SQL Server 中新增憑證

如要允許 SQL Server 透過 Cloud Storage 值區進行驗證,您必須在 SQL Server 中建立憑證物件,以儲存 Cloud Storage 存取金鑰和密鑰。如要這麼做,請在 SQL Server Management Studio (SSMS) 中執行下列 T-SQL 指令。

CREATE CREDENTIAL CREDENTIAL_NAME
WITH
    IDENTITY = 'S3 Access Key',
    SECRET = 'ACCESS_KEY:SECRET';

更改下列內容:

  • CREDENTIAL_NAME:為憑證命名。
  • ACCESS_KEY:使用您在上一節中建立的存取金鑰。
  • SECRET:您在上一節中建立的密鑰。

IDENTITY = 'S3 Access Key' 至關重要,因為這會告知 SQL Server 使用新的 S3 連接器。私密金鑰的格式應為存取金鑰,後接半形冒號,然後是私密金鑰。

範例:

CREATE CREDENTIAL sql_backup_credentials
WITH
    IDENTITY = 'S3 Access Key',
    SECRET = 'GOOGGE3SVF7OQE5JRMLQ7KWB:b31Pl8Tx1ARJfdGOsbgMFQNbk3nPdlT2UCYzs1iC';

將資料備份至 Cloud Storage

設定好憑證後,您現在可以使用 BACKUP DATABASE 指令搭配 TO URL 選項,將資料庫直接備份到 Cloud Storage 值區。在網址前面加上 s3://storage.googleapis.com,即可使用 S3 連接器,如下所示。

BACKUP DATABASE DATABASE_NAME
TO URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak'
WITH
    CREDENTIAL = 'CREDENTIAL_NAME',
    FORMAT,
    STATS = 10,
    MAXTRANSFERSIZE = 10485760,
    COMPRESSION;

更改下列內容:

  • CREDENTIAL_NAME:您在步驟 3 中建立的憑證名稱。例如:sql_backup_credentials
  • BUCKET_NAME:您在步驟 1 中建立的值區名稱。
  • FOLDER_NAME:要儲存備份檔案的資料夾名稱。
  • BACKUP_FILE_NAME 備份檔案的名稱。

指令中使用的備份參數說明如下:

  • FORMAT:覆寫現有的備份檔案,並建立新的媒體集。
  • STATS:回報備份進度。
  • COMPRESSION:壓縮備份檔,可縮減檔案大小和上傳時間。
  • MAXTRANSFERSIZE:建議使用此選項,避免大型備份檔案發生 I/O 錯誤。

詳情請參閱「將 SQL Server 備份至與 S3 相容的物件儲存空間的網址」。

如果是超大型資料庫,您可以按照下列步驟將備份檔分割為多個檔案。

BACKUP DATABASE DATABASE_NAME
TO
    URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME_0.bak',
    URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME_1.bak'
    -- ... more files
WITH
    CREDENTIAL = 'CREDENTIAL_NAME',
    FORMAT,
    STATS = 10,
    MAXTRANSFERSIZE = 10485760,
    COMPRESSION;

從 Cloud Storage 還原資料

您可以使用 RESTORE DATABASE 指令,直接從儲存在 Cloud Storage 的備份檔案還原資料庫,如下所示。

RESTORE DATABASE DATABASE_NAME
FROM URL = 's3://storage.googleapis.com/BUCKET_NAME/FOLDER_NAME/BACKUP_FILE_NAME.bak'
WITH
    CREDENTIAL = 'CREDENTIAL_NAME';

更改下列內容:

  • CREDENTIAL_NAME:您在步驟 3 中建立的憑證名稱。例如:sql_backup_credentials
  • BUCKET_NAME:您在步驟 1 中建立的值區名稱。
  • FOLDER_NAME:要儲存備份檔案的資料夾名稱。
  • BACKUP_FILE_NAME 備份檔案的名稱。

清除所用資源

如要避免系統向您的 Google Cloud 帳戶收取這個教學課程所用資源的費用,請執行下列動作:

刪除專案

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

後續步驟

  • 探索 Google Cloud 的參考架構、圖表和最佳做法。 歡迎瀏覽我們的雲端架構中心