本頁面說明如何保護 Spanner 資料庫,避免意外刪除。
Spanner 資料庫刪除保護功能可防止使用者或服務帳戶意外刪除現有資料庫,因為這些帳戶具備刪除資料庫所需的 IAM 權限。啟用資料庫刪除防護功能後,您就能保護對應用程式和服務而言重要的資料庫。您可以搭配使用資料庫防刪除功能、時間點復原和備份功能,為 Spanner 資料庫提供完整的資料保護功能。
根據預設,建立新資料庫時,系統會停用刪除保護設定。資料庫建立作業成功後,您可以啟用防刪除設定。此外,您也可以在現有資料庫中啟用這項設定。如要保護多個資料庫,請分別為每個資料庫啟用這項設定。啟用或停用防刪除功能不會對資料庫效能造成任何影響。如果您需要刪除已啟用資料庫保護功能的資料庫,請先停用保護功能,再刪除資料庫。
限制
在下列情況下,您無法啟用資料庫防刪除功能:
- 是否正在刪除資料庫。
- 如果資料庫是從備份還原,(還原作業完成後,您可以啟用資料庫保護功能)。
此外,資料庫備份和從備份還原的資料庫不會繼承來源資料庫的資料庫刪除保護設定。從備份還原資料庫後,您必須另外啟用資料庫刪除保護功能。
如果您刪除專案,Spanner 資料庫刪除保護功能不會防止資料庫或執行個體遭到刪除。如要進一步瞭解刪除專案後會發生什麼情況,請參閱「關閉 (刪除) 專案」一文。
使用 IAM 控管存取權
如要啟用資料庫的防刪除設定,您必須具備特定的 IAM 權限。
您必須具備 spanner.databases.update
權限,才能啟用或停用資料庫防刪除功能。如果您只需要查看資料庫設定的狀態,就必須具備 spanner.databases.list
或 spanner.databases.get
權限。如要瞭解如何授予 Spanner IAM 權限,請參閱「套用 IAM 權限」。
如果資料庫有預先定義的 Spanner 資料庫管理員 roles/spanner.databaseAdmin
角色,您可以更新並啟用資料庫防刪除功能。
您可以在現有資料庫上啟用資料庫刪除保護設定,避免資料庫遭到意外刪除。
啟用資料庫防刪除功能
您可以使用 gcloud CLI、用戶端程式庫,以及 REST 或 RPC API 啟用資料庫刪除保護功能。您無法使用 Google Cloud 控制台啟用資料庫防刪除功能。
gcloud
如要啟用資料庫的刪除保護設定,請執行下列指令:
gcloud spanner databases update
DATABASE_ID --instance=INSTANCE_ID
--enable-drop-protection [--async]
以下選項為必填:
DATABASE_ID
- 資料庫 ID。
INSTANCE_ID
- 資料庫執行個體的 ID。
以下選項為選用:
--async
- 立即傳回,不必等待進行中的作業完成。
用戶端程式庫
C++
C#
Go
Java
Node.js
PHP
Python
Ruby
檢查資料庫是否已啟用防刪除功能
您可以查看資料庫設定,判斷資料庫是否已啟用防刪除功能。
gcloud
如要確認資料庫是否已啟用刪除保護功能,您可以執行 gcloud spanner databases describe
指令來取得資料庫的詳細資訊,也可以執行 gcloud spanner databases list
指令來取得執行個體內資料庫的詳細資訊。
gcloud spanner databases describe
projects/PROJECT_ID/instances/INSTANCE_ID/databases/DATABASE_ID
以下選項為必填:
PROJECT_ID
- 資料庫專案的 ID。
INSTANCE_ID
- 資料庫執行個體的 ID。
DATABASE_ID
- 資料庫 ID。
如果啟用了防刪除功能,輸出內容中就會顯示 enableDropProtection: true
參數。
停用資料庫防刪除功能
如果資料庫不再需要這項防刪除功能,或是您需要刪除已啟用這項設定的資料庫,您可以停用資料庫防刪除功能。
如果您要刪除的執行個體中,有一或多個啟用防刪除功能的資料庫,則必須先停用該執行個體中所有資料庫的防刪除功能,才能刪除執行個體。
gcloud
如要停用資料庫的刪除保護設定,請執行下列指令:
gcloud spanner databases update
DATABASE_ID --instance=INSTANCE_ID
--no-enable-drop-protection [--async]
以下選項為必填:
DATABASE_ID
- 資料庫 ID。
INSTANCE_ID
- 資料庫執行個體的 ID。
以下選項為選用:
--async
- 立即傳回,不必等待進行中的作業完成。