本页面介绍了如何防止 Spanner 数据库意外发生 删除。
Spanner 数据库删除保护功能可防止具有删除数据库所需 IAM 权限的用户或服务账号意外删除现有数据库。启用数据库删除保护后 您可以保护对应用和服务非常重要的数据库。 将数据库删除保护功能与时间点恢复和备份功能搭配使用,为 Spanner 数据库提供一整套全面的数据保护功能。
默认情况下,在您创建新的集群时,删除保护设置处于停用状态 数据库。您可以在完成删除后启用删除保护设置, 已成功创建数据库。此外,您还可在 现有数据库如果您要保护多个数据库,请为每个数据库分别启用此设置。启用或停用删除保护功能不起作用 对数据库的性能造成任何影响如果您需要删除数据库 则需要先停用该保护 您可以删除该数据库
限制
在以下情况下,您无法启用数据库删除保护:
- 如果数据库正在被删除。
- 是否正在从备份中恢复数据库。(恢复操作之后 即可启用数据库保护)。
此外,数据库备份和从备份恢复的数据库也不会 并沿用其源数据库的数据库删除保护设置。更新后 使用备份恢复数据库时,必须启用其数据库删除功能 单独进行保护
如果您删除项目,Spanner 数据库删除保护 不会阻止删除数据库或实例。更多信息 有关删除项目后的情况,请参阅关停(删除) 项目。
使用 IAM 进行访问权限控制
要启用数据库的删除保护设置,您必须 特定 IAM 权限。
您需要获得 spanner.databases.update
权限才能启用或
停用数据库删除保护。如果您只需查看
您的数据库配置,则需要使用 spanner.databases.list
或
spanner.databases.get
权限。了解如何授予
Spanner IAM 权限,请参阅
应用 IAM 权限。
如果您有预定义的 Spanner Database Admin
以下账号的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
- 立即返回,无需等待正在进行的操作 操作完成。