建立及管理隨選和自動備份

本頁面說明如何為 Cloud SQL 執行個體排定自動備份時程與停用自動備份、建立及管理隨選備份,以及查看備份。

如想深入瞭解備份的運作方式,請參閱備份總覽一文。

建立按照需求執行的備份

建立隨選備份:

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 在 SQL 導覽選單中選取「Backups」
  4. 按一下「Create backup」(建立備份)
  5. 在「Create backup」(建立備份)頁面上,視需要新增說明並點選「Create」(建立)

gcloud

建立備份:

gcloud sql backups create \
--async \
--instance=INSTANCE_NAME

您可以使用 --description 參數提供備份的說明。

如要在自訂位置建立備份,請按照下列步驟操作:

gcloud sql backups create \
--async \
--instance=INSTANCE_NAME \
--location=BACKUP_LOCATION

REST v1

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/backupRuns

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

REST v1beta4

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/backupRuns

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

排定自動備份時間

為執行個體排定自動備份時程:

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 在 SQL 導覽選單中選取「Backups」
  4. 按一下「設定」旁的「編輯」
  5. 選擇自動備份資料的時間範圍。
  6. 按一下 [儲存]

gcloud

  1. 編輯執行個體,指定備份開始時間:
    gcloud sql instances patch INSTANCE_NAME --backup-start-time=HH:MM
    backup-start-time 參數會以 24 小時制指定在 UTC±00 時區中,並指定 4 小時備份時間的開始。備份可於備份期間的任何時間開始。
  2. 確認變更:
    gcloud sql instances describe INSTANCE_NAME
    backupConfiguration 部分中,確認您看到 enabled: true 和指定的時間。

Terraform

如要為資料庫建立備份,請使用 Terraform 資源

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance-backup"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier = "db-custom-2-7680"
    backup_configuration {
      enabled    = true
      start_time = "20:55"
    }
  }
}

套用變更

如要在 Google Cloud 專案中套用 Terraform 設定,請完成下列各節中的步驟。

準備 Cloud Shell

  1. 啟動 Cloud Shell
  2. 設定要套用 Terraform 設定的預設 Google Cloud 專案。

    您只需為每個專案執行這個指令一次,而且可以在任何目錄中執行。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 設定檔中設定明確的值,系統就會覆寫環境變數。

準備目錄

每個 Terraform 設定檔都必須有自己的目錄 (也稱為根模組)。

  1. Cloud Shell 中建立目錄,並在該目錄中建立新檔案。檔案名稱必須包含 .tf 副檔名,例如 main.tf。在本教學課程中,檔案稱為 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 如果您正在參考教學課程,可以複製各個章節或步驟中的程式碼範例。

    將範例程式碼複製到新建立的 main.tf 中。

    您可以視需要從 GitHub 複製程式碼。如果 Terraform 程式碼片段是端對端解決方案的一部分,建議您採用這種做法。

  3. 查看並修改要套用至環境的範例參數。
  4. 儲存變更。
  5. 初始化 Terraform。這項操作只需對每個目錄執行一次。
    terraform init

    如要使用最新版的 Google 供應器,請視需要加入 -upgrade 選項:

    terraform init -upgrade

套用變更

  1. 檢查設定,並確認 Terraform 要建立或更新的資源是否符合您的預期:
    terraform plan

    視需要修正設定。

  2. 執行下列指令,並在提示中輸入 yes,即可套用 Terraform 設定:
    terraform apply

    等待 Terraform 顯示「Apply complete!」(套用完成) 訊息。

  3. 開啟 Google Cloud 專案即可查看結果。在 Google Cloud 控制台中,前往 UI 中的資源,確認 Terraform 已建立或更新這些資源。

刪除變更

如要刪除變更,請按照下列步驟操作:

  1. 如要停用防刪除功能,請在 Terraform 設定檔中將 deletion_protection 引數設為 false
    deletion_protection =  "false"
  2. 執行下列指令,並在提示中輸入 yes,即可套用更新的 Terraform 設定:
    terraform apply
  1. 如要移除先前透過 Terraform 設定套用的資源,請執行下列指令,並在提示中輸入 yes

    terraform destroy

REST v1

使用任何要求資料之前,請先替換以下項目:

  • PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
  • INSTANCE_NAME:您為高可用性設定的主執行個體或讀取備用資源執行個體的名稱
  • START_TIME:時間 (以小時和分鐘為單位)

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME

JSON 要求主體:

{
  "settings":
  {
    "backupConfiguration":
    {
      "startTime": "START_TIME",
      "enabled": true,
      "binaryLogEnabled": true
    }
  }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

REST v1beta4

設定自訂備份位置

只有在法規要求的情況下,才使用自訂備份位置。如果不需要,請使用預設的多地區備份位置。

您可以使用自訂位置來建立隨選備份和自動備份。如需有效位置值的完整清單,請參閱「執行個體位置」。

如要更新自訂位置的執行個體,請按照下列步驟操作:

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 在 SQL 導覽選單中,選取「Backups」(備份)
  4. 按一下「設定」旁的「編輯」
  5. 在「自動備份」部分,展開「進階選項」
  6. 按一下「多區域 (預設)」或「區域」
  7. 從「位置」下拉式選單中選取位置。
  8. 按一下 [儲存]

gcloud

如需參考資訊,請參閱 gcloud sql instances patch

gcloud sql instances patch INSTANCE_NAME \
--backup-location=BACKUP_LOCATION
  

Terraform

如要指定資料庫執行個體備份的自訂位置,請使用 Terraform 資源

resource "google_sql_database_instance" "default" {
  name             = "sqlserver-instance-with-backup-location"
  region           = "us-central1"
  database_version = "SQLSERVER_2019_STANDARD"
  root_password    = "INSERT-PASSWORD-HERE"
  settings {
    tier = "db-custom-2-7680"
    backup_configuration {
      enabled  = true
      location = "us-central1"
    }
  }
}

REST v1

使用執行個體的 settings.backupConfiguration.location 參數做為備份位置。

使用任何要求資料之前,請先替換以下項目:

  • region:專案區域
  • backup-region:備份區域
  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id

JSON 要求主體:

{
  "region": "region"
  "settings":
  {
    "backupConfiguration":
    {
      "location": "backup-region",
      "enabled": true,
    }
  }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

REST v1beta4

使用執行個體的 settings.backupConfiguration.location 參數做為備份位置。

使用任何要求資料之前,請先替換以下項目:

  • region:專案區域
  • backup-region:備份區域
  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

JSON 要求主體:

{
  "region": "region"
  "settings":
  {
    "backupConfiguration":
    {
      "location": "backup-region",
      "enabled": true,
    }
  }
}

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

查看備份清單

如要查看備份清單和備份詳細資料,請使用下列選項。

Google Cloud 控制台不會在備份記錄中顯示略過或失敗的備份。如要查看略過的備份,請使用 gcloud 或 API。

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 從 SQL 導覽選單中選取「Backups」,即可查看最近的備份、建立時間和備份類型。

gcloud

  • 列出執行個體的備份:
    gcloud sql backups list \
    --instance INSTANCE_NAME

    您可以使用標準清單參數篩選及控制結果。 如需完整清單,請參閱 gcloud sql backups list 指令參考頁面。

  • 請從 backups list 指令的輸出內容中指定備份 ID,即可查看備份詳細資料。
    gcloud sql backups describe BACKUP_ID \
    --instance INSTANCE_NAME
        

REST v1

您也可以使用 BackupRuns:list 頁面上的 APIs Explorer 傳送 REST API 要求。

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/backupRuns

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

REST v1beta4

您也可以使用 BackupRuns:list 頁面上的 APIs Explorer 傳送 REST API 要求。

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/backupRuns

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

在服務中斷期間查看備份清單

如果執行個體位於發生服務中斷的地區,您只能使用 backupRuns.list API 的萬用字元 (-) 查看該執行個體的備份。萬用字元會傳回專案中的所有備份。請參閱「還原為不同執行個體」。

如果執行個體所在的地區發生停機,且已啟用客戶管理的加密金鑰 (CMEK),您就無法將該執行個體的備份還原到其他地區。這是因為在啟用 CMEK 後,Cloud SQL 會使用區域 Cloud KMS 金鑰進行加密。如要還原 CMEK 執行個體的備份,Cloud SQL 必須能存取 CMEK 金鑰。在區域服務中斷時,您將無法存取該區域的 Cloud KMS 金鑰。

gcloud

  1. 列出專案中每個執行個體的備份:
    gcloud sql backups list --instance -

    指令會傳回類似以下的資訊:

    {
          "kind": "sql#backupRun",
          "status": "SUCCESSFUL",
          "enqueuedTime": "2020-01-21T11:25:33.818Z",
          "id": "backup-id",
          "startTime": "2020-01-21T11:25:33.858Z",
          "endTime": "2020-01-21T11:26:18.663Z",
          "type": "AUTOMATED",
          "windowStartTime": "2020-01-21T10:00:00.479Z",
          "instance": "instance-id",
          "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/backupRuns/backup-id",
          "location": "us"
          "backupKind": "SNAPSHOT"
        }
  2. 找出所需執行個體的備份。如要還原這個備份,請參閱「還原為不同執行個體」。

REST v1

  1. 列出專案中的所有備份:

    使用任何要求資料之前,請先替換以下項目:

    • PROJECT_ID:專案 ID
    • INSTANCE_ID:例項 ID,或 - (專案中的所有備份清單)

    HTTP 方法和網址:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/-/backupRuns

    如要傳送要求,請展開以下其中一個選項:

    您應該會收到如下的 JSON 回應:

  2. 找出所需執行個體的備份。如要還原這個備份,請參閱「還原為不同執行個體」。

REST v1beta4

  1. 列出專案中的所有備份:

    使用任何要求資料之前,請先替換以下項目:

    • project-id:專案 ID
    • instance-id:例項 ID,或 - (專案中的所有備份清單)

    HTTP 方法和網址:

    GET https://sqladmin.googleapis.com/v1beta4/projects/project-id/instances/-/backupRuns

    如要傳送要求,請展開以下其中一個選項:

    您應該會收到如下的 JSON 回應:

  2. 找出所需執行個體的備份。如要還原這個備份,請參閱「還原為不同執行個體」。

查看備份位置

如要查看執行個體使用的備份位置,請使用 backupRuns

控制台

  1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

    前往 Cloud SQL 執行個體

  2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
  3. 在 SQL 導覽選單中選取「Backups」
  4. 在備份清單中,「Location」欄會列出位置類型 (多區域或區域),以及每個備份的特定多區域或區域。

gcloud

如需參考資訊,請參閱 gcloud sql instances describe

  1. 列出執行個體的備份:
    gcloud sql backups list \
    --instance INSTANCE_NAME

    您可以使用標準清單參數篩選及控制結果。 如需完整清單,請參閱 gcloud sql backups list 指令參考頁面。

  2. 如要列出單一備份的詳細資料,請使用 backups list 指令輸出的 ID
    gcloud sql backups describe BACKUP_ID \
    --instance INSTANCE_NAME

REST v1

使用任何要求資料之前,請先替換以下項目:

  • project-id:專案 ID
  • instance-id:執行個體 ID

HTTP 方法和網址:

GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/backupRuns

如要傳送要求,請展開以下其中一個選項:

您應該會收到如下的 JSON 回應:

  • REGION 是原始執行個體的所在地區。
  • BACKUP_LOCATION 是您要 Cloud SQL 儲存備份的位置。
  • REST v1beta4

    使用任何要求資料之前,請先替換以下項目:

    • project-id:專案 ID
    • instance-id:執行個體 ID

    HTTP 方法和網址:

    GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/backupRuns

    如要傳送要求,請展開以下其中一個選項:

    您應該會收到如下的 JSON 回應:

  • REGION 是原始執行個體的所在地區。
  • BACKUP_LOCATION 是您要 Cloud SQL 儲存備份的位置。
  • 查看備份大小

    您可以使用 gcloud CLI 或 API 查看 Cloud SQL 執行個體的備份大小。

    gcloud

    1. 如要取得與 Google Cloud 專案相關聯的所有備份清單,請使用 gcloud sql backups list 指令:

      gcloud sql backups list
    2. 如要查看備份的大小,請使用 gcloud sql backups describe 指令:

      gcloud sql backups describe BACKUP_ID \
      --instance=INSTANCE_NAME \
      --project=PROJECT_ID

      請將以下項目改為對應的值:

      • BACKUP_ID:備份的 ID。您可以從執行 gcloud sql backups list 指令的輸出內容取得這個 ID。
      • INSTANCE_NAME:執行個體的名稱。
      • PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號

      在輸出結果中,maxChargeableBytes 參數會顯示備份的大小 (以位元組為單位)。

    REST

    取得備份清單

    您可以使用這個範例,取得與 Google Cloud 專案相關聯的所有備份清單。如需此呼叫的完整參數清單,請參閱 backupRuns.list 頁面。

    使用任何要求資料之前,請先替換以下項目:

    • PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
    • INSTANCE_NAME:執行個體名稱

    HTTP 方法和網址:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/backupRuns

    如要傳送要求,請展開以下其中一個選項:

    您應該會收到如下的 JSON 回應:

    查看備份詳細資料

    您可以使用這個範例查看備份的詳細資料,包括備份大小。如需此呼叫的完整參數清單,請參閱 backupRuns.get 頁面。

    使用任何要求資料之前,請先替換以下項目:

    • PROJECT_ID:包含執行個體的 Google Cloud 專案 ID 或專案編號
    • INSTANCE_NAME:執行個體的名稱。
    • BACKUP_ID:備份 ID。您可以從執行上一個呼叫的輸出內容取得這個 ID。

    HTTP 方法和網址:

    GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME/backupRuns/BACKUP_ID

    如要傳送要求,請展開以下其中一個選項:

    您應該會收到如下的 JSON 回應:

    設定自動備份保留期限

    如要設定要保留的自動備份數量,請按照下列步驟操作:

    控制台

    1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

      前往 Cloud SQL 執行個體

    2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
    3. 在 SQL 導覽選單中選取「Backups」
    4. 按一下 [編輯]
    5. 在「自動備份」區段中,展開「進階選項」
    6. 輸入一次要儲存的備份數量

      這個數字不得少於預設值 (七)。

    7. 按一下 [儲存]

    gcloud

    編輯執行個體,設定要保留的自動備份數量。 這個數字不得少於預設值 (七)。

    gcloud sql instances patch INSTANCE_NAME \
    --retained-backups-count=NUM_TO_RETAIN

    Terraform

    如要指定要保留的資料庫執行個體自動備份數量,請使用 Terraform 資源

    resource "google_sql_database_instance" "default" {
      name             = "sqlserver-instance-backup-retention"
      region           = "us-central1"
      database_version = "SQLSERVER_2019_STANDARD"
      root_password    = "INSERT-PASSWORD-HERE"
      settings {
        tier = "db-custom-2-7680"
        backup_configuration {
          enabled = true
          backup_retention_settings {
            retained_backups = 365
            retention_unit   = "COUNT"
          }
        }
      }
    }

    REST v1beta4

    使用任何要求資料之前,請先替換以下項目:

    • unit:選用:保留時間單位可以是整數或字串。目前支援的 (預設) 值為 1 或「COUNT」。
    • num-to-retain:要保留的自動備份數量。這個數字不得少於預設值 (7)。
    • project-id:專案 ID
    • instance-id:執行個體 ID

    HTTP 方法和網址:

    PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    JSON 要求主體:

    {
      "settings":
      {
        "backupConfiguration":
        {
          "backupRetentionSettings":
          {
            "retentionUnit": unit,
            "retainedBackups": "num-to-retain"
          }
        }
      }
    }
    

    如要傳送要求,請展開以下其中一個選項:

    您應該會收到如下的 JSON 回應:

    刪除備份

    您可以刪除自動及隨選備份。

    刪除備份所釋放的空間可能無法達到備份的大小。這是因為備份是以增量方式備份,因此刪除較舊備份可能會將其部分內容轉移到更近的備份,以保留較新備份的完整性。

    控制台

    1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

      前往 Cloud SQL 執行個體

    2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
    3. 在 SQL 導覽選單中選取「Backups」
    4. 對您要刪除的備份,按一下更多動作圖示 更多動作圖示。
    5. 選取 [刪除]
    6. 在「Delete backup」(刪除備份) 視窗中,將 Delete 輸入到欄位中,然後按一下「Delete」(刪除)

    gcloud

    刪除 Cloud SQL 執行個體的備份:

    gcloud beta sql backups delete BACKUP_ID \
    --instance INSTANCE_NAME
          

    如需參數的完整清單,請參閱 gcloud beta sql backups delete 指令參考頁面。

    REST v1

    1. 列出備份資料,取得要刪除的備份 ID:

      使用任何要求資料之前,請先替換以下項目:

      • project-id:專案 ID
      • instance-id:執行個體 ID

      HTTP 方法和網址:

      GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/backupRuns

      如要傳送要求,請展開以下其中一個選項:

      您應該會收到如下的 JSON 回應:

    2. 刪除備份:

      使用任何要求資料之前,請先替換以下項目:

      • project-id:專案 ID
      • instance-id:執行個體 ID
      • backup-id:備份 ID

      HTTP 方法和網址:

      DELETE https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/backupRuns/backup-id

      如要傳送要求,請展開以下其中一個選項:

      您應該會收到如下的 JSON 回應:

    REST v1beta4

    1. 列出備份資料,取得要刪除的備份 ID:

      使用任何要求資料之前,請先替換以下項目:

      • project-id:專案 ID
      • instance-id:執行個體 ID

      HTTP 方法和網址:

      GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/backupRuns

      如要傳送要求,請展開以下其中一個選項:

      您應該會收到如下的 JSON 回應:

    2. 刪除備份:

      使用任何要求資料之前,請先替換以下項目:

      • project-id:專案 ID
      • instance-id:執行個體 ID
      • backup-id:備份 ID

      HTTP 方法和網址:

      DELETE https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/backupRuns/backup-id

      如要傳送要求,請展開以下其中一個選項:

      您應該會收到如下的 JSON 回應:

    停用自動備份功能

    如要為執行個體停用自動備份功能,請按照下列步驟操作:

    控制台

    1. 前往 Google Cloud 控制台的「Cloud SQL 執行個體」頁面。

      前往 Cloud SQL 執行個體

    2. 如要開啟執行個體的「總覽」頁面,請按一下執行個體名稱。
    3. 在 SQL 導覽選單中選取「Backups」
    4. 按一下「管理自動備份」
    5. 取消勾選「自動備份」
    6. 按一下 [儲存]

    gcloud

    編輯執行個體以停用備份:

    gcloud sql instances patch INSTANCE_NAME \
    --no-backup

    REST v1

    REST v1beta4

    後續步驟