实验设置说明和要求
保护您的账号和进度。请务必在无痕浏览器窗口中,使用实验凭证运行此实验。

Cloud Spanner - 加载数据和执行备份

实验 25 分钟 universal_currency_alt 1 个点数 show_chart 入门级
info 此实验可能会提供 AI 工具来支持您学习。
此内容尚未针对移动设备进行优化。
为获得最佳体验,请在桌面设备上访问通过电子邮件发送的链接。

GSP1049

Google Cloud 自学实验的徽标

概览

Cloud Spanner 是 Google 推出的可横向扩容的全托管式关系型数据库服务。金融服务、游戏、零售及众多其他行业的客户都信赖该服务,依托其运行自身要求最严苛的工作负载。在此类场景下进行大规模部署时,服务的一致性和可用性都至关重要。

在本实验中,您将探索通过各种方式将数据加载到 Cloud Spanner 并执行数据库备份。

您将执行的操作

  • 使用 DML 插入数据
  • 通过客户端库插入数据
  • 通过客户端库插入批量数据
  • 使用 Dataflow 加载数据
  • 备份数据库

设置和要求

点击“开始实验”按钮前的注意事项

请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。

此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。

为完成此实验,您需要:

  • 能够使用标准的互联网浏览器(建议使用 Chrome 浏览器)。
注意:请使用无痕模式(推荐)或无痕浏览器窗口运行此实验。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。
  • 完成实验的时间 - 请注意,实验开始后无法暂停。
注意:请仅使用学生账号完成本实验。如果您使用其他 Google Cloud 账号,则可能会向该账号收取费用。

如何开始实验并登录 Google Cloud 控制台

  1. 点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:

    • “打开 Google Cloud 控制台”按钮
    • 剩余时间
    • 进行该实验时必须使用的临时凭据
    • 帮助您逐步完成本实验所需的其他信息(如果需要)
  2. 点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。

    该实验会启动资源并打开另一个标签页,显示“登录”页面。

    提示:将这些标签页安排在不同的窗口中,并排显示。

    注意:如果您看见选择账号对话框,请点击使用其他账号
  3. 如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。

    {{{user_0.username | "<用户名>"}}}

    您也可以在“实验详细信息”窗格中找到“用户名”。

  4. 点击下一步

  5. 复制下面的密码,然后将其粘贴到欢迎对话框中。

    {{{user_0.password | "<密码>"}}}

    您也可以在“实验详细信息”窗格中找到“密码”。

  6. 点击下一步

    重要提示:您必须使用实验提供的凭据。请勿使用您的 Google Cloud 账号凭据。 注意:在本实验中使用您自己的 Google Cloud 账号可能会产生额外费用。
  7. 继续在后续页面中点击以完成相应操作:

    • 接受条款及条件。
    • 由于这是临时账号,请勿添加账号恢复选项或双重验证。
    • 请勿注册免费试用。

片刻之后,系统会在此标签页中打开 Google Cloud 控制台。

注意:如需访问 Google Cloud 产品和服务,请点击导航菜单,或在搜索字段中输入服务或产品的名称。 “导航菜单”图标和“搜索”字段

激活 Cloud Shell

Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。

  1. 点击 Google Cloud 控制台顶部的激活 Cloud Shell “激活 Cloud Shell”图标

  2. 在弹出的窗口中执行以下操作:

    • 继续完成 Cloud Shell 信息窗口中的设置。
    • 授权 Cloud Shell 使用您的凭据进行 Google Cloud API 调用。

如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID 。输出内容中有一行说明了此会话的 Project_ID

Your Cloud Platform project in this session is set to {{{project_0.project_id | "PROJECT_ID"}}}

gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。

  1. (可选)您可以通过此命令列出活跃账号名称:
gcloud auth list
  1. 点击授权

输出:

ACTIVE: * ACCOUNT: {{{user_0.username | "ACCOUNT"}}} To set the active account, run: $ gcloud config set account `ACCOUNT`
  1. (可选)您可以通过此命令列出项目 ID:
gcloud config list project

输出:

[core] project = {{{project_0.project_id | "PROJECT_ID"}}} 注意:如需查看在 Google Cloud 中使用 gcloud 的完整文档,请参阅 gcloud CLI 概览指南

任务 1. 探索实例

在部署期间,系统为您创建了 Cloud Spanner 实例、数据库和表。

  1. 在控制台中,打开导航菜单 (导航菜单) > 查看所有产品。在数据库部分下,点击 Spanner

实例名称为 banking-instance,点击该名称以探索数据库。 关联的数据库名为 banking-db。 点击该数据库进行探索,您会看到其中已经有一个名为 Customer 的表。 点击该表,即可查看架构。

  1. 该表目前为空。返回 banking-db 概览页面。在左侧菜单中,点击 Spanner Studio,然后运行以下命令:
SELECT * FROM Customer;
  1. 没有返回任何结果。

任务 2. 使用 DML 插入数据

通过 DML 向 Spanner 插入数据是最简单的方法。您可以使用 Cloud Shell 和 gcloud 运行任何 DML 语句,包括 INSERT

  1. 在 Cloud Shell 中,运行以下命令:
gcloud spanner databases execute-sql banking-db --instance=banking-instance \ --sql="INSERT INTO Customer (CustomerId, Name, Location) VALUES ('bdaaaa97-1b4b-4e58-b4ad-84030de92235', 'Richard Nelson', 'Ada Ohio')"
  1. 返回控制台,在左侧菜单中点击概览。前往 Customer 表并选择数据,您将看到刚刚插入的行。

如前所述,您可以使用 gcloud 运行任何 DML 命令。请查阅 DML 和 Spanner 文档

当然,逐行加载数据库是低效的。

任务 3. 通过客户端库插入数据

通过程序化接口访问 Spanner 是一种理想的方式。客户端库有很多种,包括 C++、C#、Go、Java、Node.js、PHP、Python 和 Ruby

  1. 在 Cloud Shell 中,输入以下命令来调用 Nano 文本编辑器,并创建一个名为 insert.py 的全新空白配置文件。
nano insert.py
  1. 粘贴下方列出的代码块。
from google.cloud import spanner from google.cloud.spanner_v1 import param_types INSTANCE_ID = "banking-instance" DATABASE_ID = "banking-db" spanner_client = spanner.Client() instance = spanner_client.instance(INSTANCE_ID) database = instance.database(DATABASE_ID) def insert_customer(transaction): row_ct = transaction.execute_update( "INSERT INTO Customer (CustomerId, Name, Location)" "VALUES ('b2b4002d-7813-4551-b83b-366ef95f9273', 'Shana Underwood', 'Ely Iowa')" ) print("{} record(s) inserted.".format(row_ct)) database.run_in_transaction(insert_customer)
  1. Ctrl+X 退出 Nano,按 Y 确认更新,然后按 Enter 保存更改。

  2. 运行 Python 代码。

python3 insert.py
  1. 刷新 Cloud 控制台,或点击左侧菜单中的其他项,然后再次点击数据,您将看到数据库中的新行。

就像使用 gcloud 一样,您也可以从客户端库运行任何 DML 语句。您可以在文档中找到所有不同语言的多个示例。

与使用 gcloud 加载数据相比,这种方法更加灵活,但在加载包含大量行的数据源时仍有局限性。

  1. 点击检查我的进度以验证是否完成了以下目标:
通过客户端库插入数据

任务 4. 通过客户端库插入批量数据

向 Spanner 中批量加载数据无疑是一种更理想的方式。所有客户端库都支持批量加载。此示例使用了 Python。

  1. 在 Cloud Shell 中,输入以下命令来调用 Nano 文本编辑器,并创建一个名为 batch_insert.py 的全新空白配置文件。
nano batch_insert.py
  1. 粘贴下方列出的代码块。
from google.cloud import spanner from google.cloud.spanner_v1 import param_types INSTANCE_ID = "banking-instance" DATABASE_ID = "banking-db" spanner_client = spanner.Client() instance = spanner_client.instance(INSTANCE_ID) database = instance.database(DATABASE_ID) with database.batch() as batch: batch.insert( table="Customer", columns=("CustomerId", "Name", "Location"), values=[ ('edfc683f-bd87-4bab-9423-01d1b2307c0d', 'John Elkins', 'Roy Utah'), ('1f3842ca-4529-40ff-acdd-88e8a87eb404', 'Martin Madrid', 'Ames Iowa'), ('3320d98e-6437-4515-9e83-137f105f7fbc', 'Theresa Henderson', 'Anna Texas'), ('6b2b2774-add9-4881-8702-d179af0518d8', 'Norma Carter', 'Bend Oregon'), ], ) print("Rows inserted")
  1. Ctrl+X 退出 Nano,按 Y 确认更新,然后按 Enter 保存更改。

  2. 运行 Python 代码。

python3 batch_insert.py
  1. 返回 Cloud 控制台,刷新以查看刚刚插入的新数据。

批量方法效率更高,因为它是作为单个请求运行的。只需要客户端-服务器之间的一次往返,从而减少了延迟时间。

但是,这种加载数据的方法非常缓慢且资源消耗过大。

  1. 点击检查我的进度以验证是否完成了以下目标:
通过客户端库插入批量数据

任务 5. 使用 Dataflow 加载数据

Dataflow 是一项 Google Cloud 服务,可大规模流式处理和批量处理数据。Dataflow 使用多个工作器并行运行数据处理工作。数据处理方式是使用流水线定义的,这些流水线将在数据从起点(数据源)到达终点(接收器)的过程中转换数据。

Dataflow 中有适用于 Spanner 的连接器,支持将数据库连接为数据源接收器

要想加载大量数据,您可以利用 Dataflow 强大的无服务器分布式能力,从数据源(例如 Google Cloud Storage 中的 CSV 文件)读取数据,并使用接收器连接器将数据加载到 Spanner 数据库。

  1. 为做好 Dataflow 作业的前期准备工作,请在 Cloud Shell 中运行以下命令,以便在项目中创建一个存储桶,并在存储桶里创建一个包含空文件的文件夹。
gsutil mb gs://{{{project_0.project_id|Project ID}}} touch emptyfile gsutil cp emptyfile gs://{{{project_0.project_id|Project ID}}}/tmp/emptyfile
  1. 为确保 API 和权限设置得当,请在 Cloud Shell 中执行以下代码块。
gcloud services disable dataflow.googleapis.com --force gcloud services enable dataflow.googleapis.com
  1. 在控制台中,打开导航菜单 (导航菜单) > 查看所有产品。在 Analytics 部分下,点击 Dataflow

  2. 在屏幕顶部,点击基于模板创建作业

  3. 在模板中输入以下值:

    • 作业名称:spanner-load

    • 区域端点

  4. 向下滚动 Dataflow 模板选择器,您将看到可与 Dataflow 搭配使用的所有不同蓝图。当然,您也可以使用 Beam SDK 定制自己的流水线。

模板主要有两种类型:

  • 流处理模板将为持续流动和处理的数据创建流水线(例如,来自网站的在线订单)。
  • 批处理模板将处理有起止范围的数据集(例如存储在 Google Cloud Storage 中的文件)。

在您的场景中,您将从超过 15 万行的 CSV 文件向 Spanner 银行数据库中加载数据。

  1. 选择 Cloud Storage 上的文本文件到 Cloud Spanner 模板。

  2. 在模板中输入以下值:

Cloud Spanner 实例 ID banking-instance
Cloud Spanner 数据库 ID banking-db
文本导入清单文件 spls/gsp1049/manifest.json



manifest.json 文件格式在本模板的教程中(点击参数输入字段上方的打开教程即可访问)已有说明。

清单文件必须存储在 Dataflow 可以访问和读取的 Google Cloud Storage 存储桶中。在本实验中,manifest.json 的内容如下:

{ "tables": [ { "table_name": "Customer", "file_patterns": [ "gs://spls/gsp1049/Customer_List.csv" ], "columns": [ {"column_name" : "CustomerId", "type_name" : "STRING" }, {"column_name" : "Name", "type_name" : "STRING" }, {"column_name" : "Location", "type_name" : "STRING" } ] } ] }

清单文件指定了表、列的名称和类型(按照在 CSV 文件中显示的顺序)以及 CSV 文件本身,该文件也存储在 Google Cloud Storage 存储桶中。

CSV 文件如下所示:

9d238899-8348-4642-9c00-77dc4481145b,Nicole Anderson,Ada Ohio 360ecaa6-9ec3-4fa0-81a5-3b0dc629e1fa,Ellen Richardson,Ada Ohio 8ee6c2ea-923b-45db-8d51-7f8e7a117af0,Wendy Daniel,Ada Ohio 1d7112cc-c1ee-414f-9325-95c97f9a25d3,Virginia Beasley,Ada Ohio ...
  1. 对于临时位置参数,输入以下值:
{{{project_0.project_id|Project ID}}}/tmp
  1. 展开可选参数

  2. 取消选中使用默认机器类型

  3. 通用部分,进行以下选择:

    • 系列:E2
    • 机器类型:e2-medium(2 个 vCPU、4 GB 内存)
  4. 点击运行作业以启动流水线。

  5. 此过程大约需要 12 到 16 分钟。您会看到 Dataflow 经历多个阶段:首先是启动工作器并分析由模板生成的流水线,然后,它会读取清单文件并开始处理 CSV 文件。

注意:如果您的流水线失败且发生的错误与工作器节点未预配有关,请回到第 4 步使用同一模板创建同名的新作业。这次,请选择美国境内的另一个区域端点。例如,如果第 5 步中列出的区域端点是“us-east4”,则在第二次尝试时请使用“us-east1”

等待 Dataflow 处理完毕后再继续。完成后,其状态将显示为成功

  1. 在 Cloud 控制台的左侧菜单中选择 Spanner,返回该界面。前往 Customer 表并选择数据。您将看到使用 Dataflow 加载的所有新行。

  2. 返回 banking-db 概览页面。在左侧菜单中,点击 Spanner Studio,然后运行以下查询,查看 Customer 表中的总行数:

SELECT COUNT(*) FROM Customer;

借助 Dataflow 模板,可以轻松(而且很快!)加载大量数据。您可以加载其他数据库的转储文件,还可以按照相同的过程加载 CSV 文件和 Avro 文件。您甚至可以反向运行该流程,在 Dataflow 中使用 Spanner 数据库作为数据源,将数据导出到 CSV 或 Avro 文件。

  1. 点击检查我的进度以验证是否完成了以下目标:
使用 Dataflow 加载数据

任务 6. 备份数据库

如上所述,使用 Dataflow 可以创建数据备份。但 Spanner 有自己的备份工具。 您可以从 Cloud 控制台客户端库或使用 gcloud 命令备份 Spanner 数据库。请查阅前面的文档链接。

在本实验中,您将使用 Cloud 控制台备份数据库。

  1. 从左侧菜单中选择备份/恢复

  2. 点击创建备份

  3. 在向导中输入或选择以下值:

数据库名称 banking-db
备份名称 banking-backup-001
失效日期 1 年



  1. 点击创建

  2. 备份大约需要 15 分钟才能完成,在创建过程中它会显示在备份列表中。

恭喜!

现在,您已经扎实地掌握了向 Cloud Spanner 实例中加载数据并执行备份的各种方法。

Google Cloud 培训和认证

…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。

上次更新手册的时间:2025 年 9 月 16 日

上次测试实验的时间:2025 年 9 月 16 日

版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。

准备工作

  1. 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
  2. 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
  3. 在屏幕左上角,点击开始实验即可开始

使用无痕浏览模式

  1. 复制系统为实验提供的用户名密码
  2. 在无痕浏览模式下,点击打开控制台

登录控制台

  1. 使用您的实验凭证登录。使用其他凭证可能会导致错误或产生费用。
  2. 接受条款,并跳过恢复资源页面
  3. 除非您已完成此实验或想要重新开始,否则请勿点击结束实验,因为点击后系统会清除您的工作并移除该项目

此内容目前不可用

一旦可用,我们会通过电子邮件告知您

太好了!

一旦可用,我们会通过电子邮件告知您

一次一个实验

确认结束所有现有实验并开始此实验

使用无痕浏览模式运行实验

使用无痕模式或无痕浏览器窗口是运行此实验的最佳方式。这可以避免您的个人账号与学生账号之间发生冲突,这种冲突可能导致您的个人账号产生额外费用。