本頁面說明如何防止 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 建立執行個體,否則防刪除功能會停用。
如果啟用防刪除功能,刪除執行個體的嘗試就會失敗。
控制台
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"
}
啟用或停用現有執行個體的防刪除功能
您可以透過下列方式編輯執行個體,啟用防刪除功能。如果啟用這個選項,後續刪除執行個體的嘗試就會失敗。
控制台
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"
}