本页面介绍了如何管理 Spanner database,包括如何创建数据库、 数据库选项和删除数据库。如需了解如何更新数据库架构,请参阅进行架构更新。
如需练习创建数据库并使用示例数据加载数据库,请参阅 您的第一个数据库 Codelab。
创建数据库
以下示例展示了如何在现有实例中创建数据库。
对于 GoogleSQL 方言数据库,您可以定义 schema(在创建数据库时创建),或者 创建数据库之后对于 PostgreSQL 方言数据库,您必须 定义架构
架构是使用数据库定义语言定义的, 对于 GoogleSQL 和 PostgreSQL。请参阅以下链接 如需详细了解如何创建和更新架构,请参阅以下内容:
创建数据库后,您可以保护重要的数据库 来保护您的应用和服务。对于 如需了解详情,请参阅防止意外删除数据库。
控制台
gcloud
使用 gcloud spanner databases create
命令。
gcloud spanner databases create DATABASE \
--instance=INSTANCE \
[--async] \
[--database-dialect=DATABASE_DIALECT] \
[--ddl=DDL] \
[--ddl-file=DDL_FILE] \
[--kms-key=KMS_KEY : --kms-keyring=KMS_KEYRING --kms-location=KMS_LOCATION --kms-project=KMS_PROJECT] \
[GCLOUD_WIDE_FLAG …]
以下选项为必需:
DATABASE
- 数据库的 ID 或
数据库。如果指定完全限定的标识符,
--instance
标志可以省略。 --instance=INSTANCE
- 数据库的 Spanner 实例。
以下选项为可选:
--async
- 立即返回,无需等待正在进行的操作 操作完成。
--database-dialect=DATABASE_DIALECT
- Spanner 数据库的 SQL 方言。必须为
以下各项中的一项:
POSTGRESQL
、GOOGLE_STANDARD_SQL
。 --ddl=DDL
- 要运行的以英文分号分隔的 DDL(数据定义语言)语句
创建 Deployment 清单如果执行任何
语句,则不会创建数据库。在以下情况下,系统会忽略此标志:
已设置
--ddl_file
。PostgreSQL 方言数据库不支持。 --ddl-file=DDL_FILE
- 包含以英文分号分隔的文件的路径
在新映像中运行的 DDL(数据定义语言)语句
数据库。如果有任何语句出现错误,数据库会
未创建。如果设置了
--ddl_file
,则--ddl
已忽略。PostgreSQL 方言数据库不支持。
如果您指定了要使用的 Cloud Key Management Service 密钥 创建数据库时,请添加以下选项:
--kms-key=KMS_KEY
- 密钥的 ID 或密钥的完全限定标识符。
如果此字段中的任何其他参数 。如果 提供的是完全限定的标识符
--kms-keyring=KMS_KEYRING
- 密钥的 Cloud KMS 密钥环 ID。
--kms-location=KMS_LOCATION
- 密钥的 Google Cloud 位置。
--kms-project=KMS_PROJECT
- 密钥的 Google Cloud 项目 ID。
客户端 (GoogleSQL)
C++
如需了解如何安装和使用 Spanner 客户端库,请参阅 Spanner 客户端库。
如需向 Spanner 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Go
如需了解如何安装和使用 Spanner 客户端库,请参阅 Spanner 客户端库。
如需向 Spanner 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
Java
如需了解如何安装和使用 Spanner 客户端库,请参阅 Spanner 客户端库。
如需向 Spanner 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
<ph type="x-smartling-placeholder">
Node.js
如需了解如何安装和使用 Spanner 客户端库,请参阅 Spanner 客户端库。
如需向 Spanner 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
<ph type="x-smartling-placeholder">
PHP
如需了解如何安装和使用 Spanner 客户端库,请参阅 Spanner 客户端库。
如需向 Spanner 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
<ph type="x-smartling-placeholder">
Python
如需了解如何安装和使用 Spanner 客户端库,请参阅 Spanner 客户端库。
如需向 Spanner 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
<ph type="x-smartling-placeholder">
Ruby
如需了解如何安装和使用 Spanner 客户端库,请参阅 Spanner 客户端库。
如需向 Spanner 进行身份验证,请设置应用默认凭据。 如需了解详情,请参阅为本地开发环境设置身份验证。
更新数据库架构或选项
您可以使用 DDL 语句更新数据库架构和选项。
例如,如需向表中添加列,请使用以下 DDL 语句:
GoogleSQL
ALTER TABLE Songwriters ADD COLUMN Publisher STRING(10);
PostgreSQL
ALTER TABLE Songwriters ADD COLUMN Publisher VARCHAR(10);
如需更新查询优化器版本,请使用以下 DDL 语句:
GoogleSQL
ALTER DATABASE Music SET OPTIONS(optimizer_version=null);
PostgreSQL
ALTER DATABASE DB-NAME SET spanner.optimizer_version TO DEFAULT;
如需详细了解支持的选项,请参阅 ALTER DATABASE
DDL
适用于 GoogleSQL 或
PostgreSQL。
如需了解架构更新,请参阅 进行架构更新。
控制台
前往 Google Cloud 控制台中的实例页面。
选择包含要更改的数据库的实例。
选择数据库。
点击 Spanner Studio。
点击
新标签页,或使用空白 编辑器标签页。然后,输入要应用的 DDL 语句。点击运行以应用更新。如果 DDL 中存在错误 Google Cloud 控制台返回错误,且数据库 。
gcloud
如需使用 gcloud
命令行工具更改数据库,请使用
gcloud spanner databases ddl update
。
gcloud spanner databases ddl update \ (DATABASE : --instance=INSTANCE) \ [--async] \ [--ddl=DDL] \ [--ddl-file=DDL_FILE] \
请参阅
gcloud
参考文档
详细了解可用选项
使用 --ddl
标志或
--ddl-file
标志。如果指定了 DDL 文件,则会忽略 --ddl
标志。
参阅 ALTER DATABASE
DDL 参考文档
对于 GoogleSQL 或
PostgreSQL:需要包含的 DDL 语句。
DDL
参阅 ALTER DATABASE
DDL 参考文档
对于 GoogleSQL 或
PostgreSQL。
检查架构更新操作的进度
控制台
在 Spanner 导航菜单中,选择操作标签页。通过 操作页面显示了当前正在运行的操作的列表。
在列表中找到架构操作。如果它仍在运行 结束时间列中的一个长条显示了符合以下条件的操作所占的百分比: 完成,如下图所示:
gcloud
使用gcloud spanner operations describe
来检查操作进度。
获取操作 ID:
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
替换以下内容:
- 将 INSTANCE-NAME 替换为 Spanner 实例 名称。
- 将 DATABASE-NAME 替换为数据库的名称。
运行
gcloud spanner operations describe
:gcloud spanner operations describe OPERATION_ID\ --instance=INSTANCE-NAME \ --database=DATABASE-NAME
替换以下内容:
- OPERATION-ID:您要执行的操作的 ID 检查。
- INSTANCE-NAME:Spanner 实例名称。
- DATABASE-NAME:Spanner 数据库名称。
输出中的
progress
部分显示了操作所占的百分比 这样就完成了输出类似于以下内容:done: true metadata: ... progress: - endTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 startTime: '2022-03-01T00:28:04.221401Z' - endTime: '2022-03-01T00:28:17.624588Z' startTime: '2022-03-01T00:28:06.691403Z' progressPercent: 100 ...
REST v1
获取操作 ID:
gcloud spanner operations list --instance=INSTANCE-NAME \ --database=DATABASE-NAME --type=DATABASE_UPDATE_DDL
替换以下内容:
- 将 INSTANCE-NAME 替换为 Spanner 实例 名称。
- DATABASE-NAME 替换为数据库名称。
检查操作的进度。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT-ID:项目 ID。
- INSTANCE-ID:实例 ID。
- DATABASE-ID:数据库 ID。
- OPERATION-ID:操作 ID。
HTTP 方法和网址:
GET https://spanner.googleapis.com/v1/projects/PROJECT-ID/instances/INSTANCE-ID/databases/DATABASE-ID/operations/OPERATION-ID
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ ... "progress": [ { "progressPercent": 100, "startTime": "2023-05-27T00:52:27.366688Z", "endTime": "2023-05-27T00:52:30.184845Z" }, { "progressPercent": 100, "startTime": "2023-05-27T00:52:30.184845Z", "endTime": "2023-05-27T00:52:40.750959Z" } ], ... "done": true, "response": { "@type": "type.googleapis.com/google.protobuf.Empty" } }
如果操作耗时过长,您可以取消该操作。如需了解详情,请参阅 取消长时间运行的数据库操作。
删除数据库
删除数据库将会永久移除该数据库及其所有数据。数据库 删除操作无法撤消。如果执行数据库删除保护 则无法删除该数据库,除非您停用其 删除保护。
删除数据库时,现有备份不会删除。有关 相关信息,请参阅备份和恢复。
控制台
前往 Google Cloud 控制台中的实例页面。
选择包含要删除的数据库的实例。
选择数据库。
点击删除数据库。系统会显示确认消息。
输入数据库名称,然后点击删除。
gcloud
如需使用 gcloud
命令行工具删除数据库,请使用
gcloud spanner databases delete
。
gcloud spanner databases delete \ (DATABASE : --instance=INSTANCE)
以下选项为必需:
DATABASE
- 数据库的 ID 或数据库的完全限定标识符。如果
提供的是完全限定的标识符,即
--instance
标志应省略。 --instance=INSTANCE
- 数据库的 Spanner 实例。
有关详情,请参阅
gcloud
参考文档。
DDL
DDL 不支持数据库删除语法。
后续步骤
- 创建数据库并使用示例数据加载该数据库。
- 详细了解 GoogleSQL DDL 参考文档。
- 详细了解 PostgreSQL DDL 参考文档。
- 了解如何备份和恢复数据库。
- 了解如何防止意外删除数据库。
- 了解如何更新架构。