1. 概览
上次更新日期:2020 年 7 月 23 日
什么是 Cloud Spanner?
Google Cloud Spanner 是一个覆盖全球、符合 ACID 标准的数据库,可自动处理副本、分片和事务处理,可让您快速扩容以适应任何使用模式,并确保产品取得成功。
主要功能
- 可灵活扩缩的关系型数据库:架构、SQL 查询和 ACID 事务等关系型数据库应有的一切功能都具备,久经考验,且随时可以在全球范围内扩容。
- 可用性达 99.999%:Cloud Spanner 可为多区域实例提供业界领先的 99.999% 可用性,比 4 个九 (99%) 的停机时间少 10 倍,并能跨区域和多区域配置提供透明的同步复制。
- 自动分片:Cloud Spanner 根据请求负载和数据大小自动分片,从而优化性能。因此,您可以减少花在如何扩缩数据库上的时间,从而专注于业务扩缩。
学习内容
- 如何使用 Google Cloud Terraform 提供程序。
- 使用 Terraform 创建 Cloud Spanner 实例和数据库。
- 使用 Terraform 修改 Cloud Spanner 资源。
- 使用 Terraform 删除 Cloud Spanner 资源。
2. 设置和要求
自定进度的环境设置
如果您还没有 Google 账号(Gmail 或 Google Apps),则必须创建一个。登录 Google Cloud Platform 控制台 ( console.cloud.google.com) 并创建一个新项目:
请记住项目 ID,它在所有 Google Cloud 项目中都是唯一的名称(上述名称已被占用,您无法使用,抱歉!)。它稍后会在此 Codelab 中称为 PROJECT_ID。
接下来,您需要在 Cloud 控制台中启用结算功能,才能使用 Google Cloud 资源。
运行此 Codelab 应该不会花费超过几美元,但如果您决定使用更多资源或让它们继续运行,费用可能更高(请参阅本文档末尾的“清理”部分)。
Google Cloud Platform 的新用户有资格获享$300 免费试用。
Authentication
如果您以前没有安装过,请安装 gcloud 命令行工具。安装 gcloud 后,在终端中运行以下命令以激活应用默认凭据:
$ gcloud auth application-default login
Terraform
如果您尚未安装 Terraform,请先安装 Terraform。
3. Google Cloud Terraform 提供程序
Google Cloud Terraform Provider 提供四种 Cloud Spanner 资源:
- google_spanner_instance
- google_spanner_database
- google_spanner_instance_iam
- google_spanner_database_iam
在此 Codelab 中,我们将创建和管理 Cloud Spanner 实例和数据库。
环境
在开发环境中,为 Terraform 配置文件创建一个新目录。
$ mkdir ~/terraform-spanner $ cd ~/terraform-spanner
然后,创建一个名为“main.tf”的文件替换为以下内容,并将 PROJECT_ID 替换为您自己的 Google Cloud 项目 ID:
$ cat >> main.tf <<'EOF' provider "google" { project = "PROJECT_ID" } EOF
在此 Codelab 的其余部分,我们将修改此文件并应用更改。
4. 创建实例和数据库
使用以下内容修改 main.tf,以添加新的 Cloud Spanner 实例:
provider "google" { project = "PROJECT_ID" } resource "google_spanner_instance" "main" { config = "regional-us-central1" display_name = "first-terraform-instance" num_nodes = 3 }
运行以下命令以应用更改:
$ terraform apply # ... Do you want to perform these actions? Terraform will perform the actions described above. Only 'yes' will be accepted to approve. Enter a value: yes # ... Apply complete! Resources: 1 added, 0 changed, 0 destroyed.
应用更改后,您将能够在 Google Cloud 控制台中查看该实例。请注意,区域配置在实例创建后无法修改。
创建实例后,我们将在后续步骤中创建数据库。使用以下内容修改 main.tf:
provider "google" { project = "PROJECT_ID" } resource "google_spanner_instance" "main" { config = "regional-us-central1" display_name = "first-terraform-instance" num_nodes = 3 } resource "google_spanner_database" "database" { instance = google_spanner_instance.main.name name = "my-first-database" }
再次使用以下命令来应用更改:
$ terraform apply # ... Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
成功完成后,my-first-database 将在实例下可用:
5. 修改实例
如前一部分所述,并非实例的所有属性都可以修改。但您可以通过增加/减少节点数来调整实例使用的资源。创建的实例有 3 个节点。通过修改 main.tf 文件,我们会将节点数量增加到 5 个:
provider "google" { project = "PROJECT_ID" } resource "google_spanner_instance" "main" { config = "regional-us-central1" display_name = "first-terraform-instance" num_nodes = 5 } resource "google_spanner_database" "database" { instance = google_spanner_instance.main.name name = "my-first-database" }
下一步是应用更改:
$ terraform apply # ... Apply complete! Resources: 0 added, 1 changed, 0 destroyed.
成功后,该实例将使用 5 个节点。
6. 删除数据库
当您不再需要某个数据库时,可以将其永久删除。只需从 main.tf 中移除数据库并应用更改即可。
provider "google" { project = "PROJECT_ID" } resource "google_spanner_instance" "main" { config = "regional-us-central1" display_name = "first-terraform-instance" num_nodes = 5 }
$ terraform apply # ... Apply complete! Resources: 0 added, 0 changed, 1 destroyed.
成功后,数据库将被永久删除。
7. 删除实例
当您不再需要某个实例时,可以将其永久删除。只需从 main.tf 中移除实例并应用更改即可。
provider "google" { project = "PROJECT_ID" }
$ terraform apply # ... Apply complete! Resources: 0 added, 0 changed, 1 destroyed.
成功后,该实例将被永久删除。
8. 恭喜!
您已使用 Terraform 创建、修改和删除 Cloud Spanner 资源。
所学内容
- 如何使用 Google Cloud Terraform 提供程序。
- 使用 Terraform 创建 Cloud Spanner 实例和数据库。
- 使用 Terraform 修改 Cloud Spanner 资源。
- 使用 Terraform 删除 Cloud Spanner 资源。
了解详情
- 查看 Google Cloud Spanner 文档。
- 了解 Google Cloud Spanner Terraform 资源。
- 了解如何为实例和数据库设置 IAM 规则。