防止刪除執行個體

本頁面說明如何防止 Cloud SQL 執行個體遭到意外刪除。

總覽

執行個體防刪除功能可防止意外移除現有和新的執行個體。使用執行個體防刪除功能,即可保護應用程式和服務的重要執行個體。

建立執行個體時,您可以啟用防刪除功能選項。此外,您也可以在現有執行個體上啟用這個選項。無論是哪種情況,系統都會在執行個體層級防止刪除。根據預設,除非您使用 Google Cloud 控制台或 Terraform 建立執行個體,否則防刪除功能會處於停用狀態。

複製執行個體時,新執行個體會沿用來源執行個體的防刪除功能選項 (啟用或停用)。

防刪除功能方案

如果您打算建立執行個體,請決定是否要保護新執行個體,避免意外刪除。例如,重要執行個體應以此方式保護。

此外,也請考量是否有現有執行個體需要防止意外刪除。如有多個執行個體需要保護,請在每個執行個體上啟用這個選項。

考慮為唯讀副本啟用防刪除功能

建立唯讀副本時,該副本不會從主要執行個體取得防刪除設定,這項設定仍會保持獨立。不過,您可以為新的或現有的唯讀副本啟用防刪除功能。

Cloud SQL 唯讀副本的防刪除功能選項,運作方式與 Cloud SQL 執行個體相同。

確認必要權限或角色

如要啟用防刪除功能,與 Cloud SQL 執行個體相關聯的服務帳戶必須具備特定權限或 IAM 角色。

建立執行個體所需的權限或角色

與相關作業一樣,防刪除功能選項需要 cloudsql.instances.create 權限或 cloudsql.admin 角色。因此,建立執行個體時,不需額外權限即可啟用防刪除功能。

編輯執行個體所需的權限或角色

與相關作業一樣,變更防刪除功能需要 cloudsql.instances.update 權限或 cloudsql.editor 角色。因此,編輯執行個體的防刪除功能時,不需要額外權限。

規劃刪除執行個體

如要刪除執行個體,請先執行下列操作:

  • 確認可以安全刪除執行個體
  • 確認防刪除功能已停用。如有需要,請編輯執行個體,停用防刪除功能

防刪除功能的限制

執行個體的防刪除功能無法防止下列情況:

  • 停止執行個體
  • 重新啟動執行個體
  • 編輯執行個體
  • 刪除備份
  • 因帳單問題而停用執行個體
  • 因帳單問題刪除已停權的執行個體
  • 因專案刪除而刪除執行個體

為新執行個體啟用防刪除功能

以下是啟用防刪除功能的方法。根據預設,除非您使用 Google Cloud 控制台或 Terraform 建立執行個體,否則防刪除功能會停用。

如果啟用防刪除功能,刪除執行個體的嘗試就會失敗。

控制台

  1. 按照步驟開始建立執行個體。
  2. 在「自訂執行個體」部分,展開「顯示設定選項」。
  3. 展開「資料保護」。
  4. 在「資料保護」部分,確認已勾選「防止刪除執行個體」核取方塊。
  5. 視執行個體需求選取其他設定選項。
  6. 點選「建立執行個體」。

gcloud

如要在建立執行個體時啟用防刪除功能,請使用 gcloud sql instances create 指令,如下所示:

gcloud sql instances create INSTANCE_NAME \
    --deletion-protection

REST v1

如要在建立執行個體時啟用防刪除功能,請在 deletionProtection 欄位中指定 true。

使用任何要求資料之前,請先修改下列項目的值:

  • project-id:專案 ID
  • instance-id:所需的執行個體 ID
  • database-version:資料庫版本
  • region:所需區域
  • machine-type:所需機型

HTTP 方法和網址:

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

JSON 要求主體:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "deletionProtectionEnabled": true
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-05-24T15:34:10.929Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

如要在建立執行個體時啟用防刪除功能,請在 deletionProtection 欄位中指定 true。

使用任何要求資料之前,請先修改下列項目的值:

  • project-id:專案 ID
  • instance-id:所需的執行個體 ID
  • database-version:資料庫版本
  • region:所需區域
  • machine-type:所需機型

HTTP 方法和網址:

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

JSON 要求主體:

{
  "name": "instance-id",
  "region": "region",
  "databaseVersion": "database-version",
  "settings": {
    "tier": "machine-type",
    "deletionProtectionEnabled": true
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-05-26T15:37:10.929Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
如要瞭解如何為這項工作建構基礎 REST API 要求,請參閱 instances:insert 頁面上的 APIs Explorer。

啟用或停用現有執行個體的防刪除功能

您可以透過下列方式編輯執行個體,啟用防刪除功能。如果啟用這個選項,後續刪除執行個體的嘗試就會失敗。

控制台

  1. 按照步驟開始編輯執行個體。
  2. 點選「Edit」(編輯) 後,找到「Customize your instance」(自訂執行個體) 部分,然後展開「Show configuration options」(顯示設定選項)。
  3. 展開「資料保護」。
  4. 在「Data Protection」(資料保護) 區段中,勾選或取消勾選「Prevent instance deletion」(防止刪除執行個體) 核取方塊。
  5. 視執行個體需求,編輯其他設定選項。
  6. 按一下「儲存」。

gcloud

如要在更新執行個體時啟用防刪除功能,請使用 gcloud sql instances patch 指令,如下所示:

gcloud sql instances patch INSTANCE_NAME \
    --deletion-protection

如要在更新執行個體時停用防刪除功能,請使用 gcloud sql instances patch 指令,如下所示:

gcloud sql instances patch INSTANCE_NAME \
    --no-deletion-protection

REST v1

如要在更新執行個體時啟用防刪除功能,請在 deletionProtection 欄位中指定 true。如要移除防刪除功能,請在該欄位中指定 false。

使用任何要求資料之前,請先修改下列項目的值:

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

HTTP 方法和網址:

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

JSON 要求主體:

{
  "settings": {
    "deletionProtectionEnabled": true
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-06-1T03:42:12.281Z",
  "operationType": "CREATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/v1/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

REST v1beta4

如要在更新執行個體時啟用防刪除功能,請在 deletionProtection 欄位中指定 true。如要移除防刪除功能,請在該欄位中指定 false。

使用任何要求資料之前,請先修改下列項目的值:

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

HTTP 方法和網址:

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

JSON 要求主體:

{
  "settings": {
    "deletionProtectionEnabled": true
  }
}

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

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

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2022-06-1T03:32:12.281Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}
如要瞭解如何為這項工作建構基礎 REST API 要求,請參閱 instances:patch 頁面上的 APIs Explorer。