本頁說明如何避免 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 [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 [INSTANCE_NAME] \ --deletion-protection
輸入類似下方的指令,在更新執行個體時停用防刪除功能:
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" }