准备工作
- 实验会创建一个 Google Cloud 项目和一些资源,供您使用限定的一段时间
- 实验有时间限制,并且没有暂停功能。如果您中途结束实验,则必须重新开始。
- 在屏幕左上角,点击开始实验即可开始
Update DEFINER clauses to INVOKER on the MySQL source instance.
/ 10
Create and save a Database Migration Service job without starting the job.
/ 20
Create users on the Cloud SQL destination instance.
/ 10
Start a previously created Database Migration Service job.
/ 10
Confirm the user metadata in Cloud SQL for MySQL
/ 10
Database Migration Service 可高效地将 MySQL 数据库对象(包括架构、数据和元数据)从源实例迁移到目标实例。迁移作业在运行时,会将所有数据库和架构中的所有表一并迁移,但以下系统数据库除外:sys、mysql、performance_schema 和 information_schema。
用户和权限相关信息存储在 MySQL 系统数据库中。由于 Database Migration Service 作业不会迁移这些系统数据库,因此您需要先创建目标 Cloud SQL 实例,然后在其中管理用户和权限。如需详细了解迁移保真度相关信息,请参阅迁移保真度指南。
如果对象的 DEFINER 子句中指定的用户在目标实例中不存在,则迁移后可能无法调用该对象。如需了解详情,请参阅“创建并运行包含 DEFINER 子句元数据的 MySQL 迁移作业”指南。
为避免迁移后在目标实例中调用对象时出现错误,请在运行迁移作业之前完成以下两项操作中的一项:
DEFINER 子句相关联的所有用户都存在于目标实例中。DEFINER 子句更改为 INVOKER。这样可将目标实例中的数据访问安全权限设置为运行查询的用户权限,而非定义该对象的用户权限。满足这些前提条件后,您即可创建并保存 Database Migration Service 作业,然后可启动该已保存的作业。成功完成迁移后,最后一步即是验证 Cloud SQL for MySQL 实例上的用户元数据。
在本实验中,您将学习如何在运行 Database Migration Service 作业时迁移 MySQL 用户数据:
DEFINER 子句更新为 INVOKER。请阅读以下说明。实验是计时的,并且您无法暂停实验。计时器在您点击开始实验后即开始计时,显示 Google Cloud 资源可供您使用多长时间。
此实操实验可让您在真实的云环境中开展实验活动,免受模拟或演示环境的局限。为此,我们会向您提供新的临时凭据,您可以在该实验的规定时间内通过此凭据登录和访问 Google Cloud。
为完成此实验,您需要:
点击开始实验按钮。如果该实验需要付费,系统会打开一个对话框供您选择支付方式。左侧是“实验详细信息”窗格,其中包含以下各项:
点击打开 Google Cloud 控制台(如果您使用的是 Chrome 浏览器,请右键点击并选择在无痕式窗口中打开链接)。
该实验会启动资源并打开另一个标签页,显示“登录”页面。
提示:将这些标签页安排在不同的窗口中,并排显示。
如有必要,请复制下方的用户名,然后将其粘贴到登录对话框中。
您也可以在“实验详细信息”窗格中找到“用户名”。
点击下一步。
复制下面的密码,然后将其粘贴到欢迎对话框中。
您也可以在“实验详细信息”窗格中找到“密码”。
点击下一步。
继续在后续页面中点击以完成相应操作:
片刻之后,系统会在此标签页中打开 Google Cloud 控制台。
Cloud Shell 是一种装有开发者工具的虚拟机。它提供了一个永久性的 5GB 主目录,并且在 Google Cloud 上运行。Cloud Shell 提供可用于访问您的 Google Cloud 资源的命令行工具。
点击 Google Cloud 控制台顶部的激活 Cloud Shell 。
在弹出的窗口中执行以下操作:
如果您连接成功,即表示您已通过身份验证,且项目 ID 会被设为您的 Project_ID
gcloud 是 Google Cloud 的命令行工具。它已预先安装在 Cloud Shell 上,且支持 Tab 自动补全功能。
输出:
输出:
gcloud 的完整文档,请参阅 gcloud CLI 概览指南。
在 Google Cloud 控制台标题栏的搜索字段中输入 Database Migration API,然后在搜索结果中点击 Database Migration API。
如需要,请点击启用以启用该 API。
与其他 Cloud 资源类似,目标 Cloud SQL 实例的访问和许可权限是使用 Identity and Access Management (IAM) 在项目级控制的。如需了解详情,请参阅 Cloud SQL 的 IAM 指南。
在本任务中,您将找出通过数据库访问权限控制管理的数据库用户(例如管理员和超级用户)。这些用户与通过 IAM 管理的用户不同,在发放更宽松的 IAM 访问权限之前,这些用户可能需要先行访问目标 Cloud SQL 实例,以测试迁移作业的结果。如需了解详情,请参阅“MySQL 用户简介”指南。
在 Google Cloud 控制台标题栏的导航菜单 () 中,依次点击 Compute Engine > 虚拟机实例。
找到 dms-mysql-training-vm 实例所在的行。
对于连接,点击 SSH 以打开终端窗口。
如果出现提示,请点击授权。
您可以忽略 SSH 窗口中显示的有关升级的任何警告。
请注意名为 debian-sys-maint、mysql.session 和 mysql.sys 的系统用户。这些用户无需重新创建,因为在创建目标实例时,MySQL 会创建这些用户。
| host | user |
|---|---|
| localhost | admin |
| % | admin |
| localhost | bsmith |
| localhost | dwilliams |
| localhost | mhill |
| localhost | root |
| % | root |
在后续任务中,您将在运行 Database Migration Service 作业时创建根用户。您还将在迁移作业创建 Cloud SQL 目标实例后创建其他用户。
在上一个任务中,您识别出了源实例上现有的 MySQL 用户。在本任务中,您将找出并更新那些有 DEFINER 条目关联到根用户或其他目标实例中尚不存在的用户的数据库对象。
如果源实例中的用户未在目标实例中创建,则必须将所有关联的 DEFINER 条目更改为 INVOKER。具体来说,根用户的所有 DEFINER 条目都应通过其他用户(例如管理员)更新为 INVOKER。
这些操作可防止迁移后在目标实例上调用对象时发生错误;如需查看其他文档,请参阅“创建并运行包含 DEFINER 子句元数据的 MySQL 迁移作业”指南。
如需获取有关 MySQL 实例中 DEFINER 的信息,您可以查询 INFORMATION_SCHEMA 表,以找出需要在迁移前检查的 DEFINER 条目(例如,由于未与 mysql 等系统数据库相关联,所以将被迁移到目标实例的 DEFINER 条目)。
DEFINER 条目:结果表明,您需要检查事件、例程、触发器和视图中是否存在 DEFINER 条目。
请注意,其中一些 DEFINER 条目可能与系统用户相关联,无需对其采取额外操作。通过查询查找各类数据库对象的 DEFINER 条目时,这些系统用户已被排除在外。
DEFINER:在与非系统用户关联的事件中,未发现 DEFINER。
DEFINER:在与非系统用户关联的例程中,未发现 DEFINER。
DEFINER:在与非系统用户关联的触发器中,未发现 DEFINER。
DEFINER:| definer | security_type | table_schema | table_name |
|---|---|---|---|
| admin@localhost | DEFINER |
customers_data | customers_single |
| admin@localhost | DEFINER |
sales_data | invoices_storenum_5173 |
| bsmith@localhost | DEFINER |
customers_data | customers_married |
| bsmith@localhost | DEFINER |
sales_data | invoices_storenum_3980 |
| mhill@localhost | DEFINER |
sales_data | invoices_storenum_3656 |
在下一部分中,您将会把此视图的 DEFINER 更新为 INVOKER。
请注意,之前找出的用户 (dwilliams) 未与视图中的任何 DEFINER 条目相关联。此外,请注意,根用户没有 DEFINER 实例。无需针对 dwilliams 和根用户执行任何操作。
在此子任务中,您需要将与 mhill 相关联的 DEFINER 条目更新为 INVOKER。
DEFINER 更新为 INVOKER:DEFINER 条目,确认该视图的条目已更新为 INVOKER:请注意,与 mhill 相关联的 DEFINER 条目已更新为 INVOKER,而与管理员和 bsmith 相关联的 DEFINER 条目保持不变。
点击“检查我的进度”,验证已完成以下目标:
DEFINER 子句更新为 INVOKER。
在本任务中,您将创建并保存迁移作业,但不启动该作业。具体来说,您将创建一次性迁移作业,并选择 VPC 对等互连作为连接选项;不过,您也可以创建并保存任何迁移作业,以便日后运行。
这样一来,您能够在完成必要任务(例如在目标实例上创建新用户)之前,先创建 Cloud SQL 目标实例而无需迁移数据。
在 Google Cloud 控制台的导航菜单 () 中,依次点击 Compute Engine > 虚拟机实例。
找到 dms-mysql-training-vm 实例所在的行。
复制内部 IP 字段的值(例如 10.128.0.2)。
在 Google Cloud 控制台标题栏的搜索字段中输入数据库迁移,然后在搜索结果中点击数据库迁移。
点击左侧窗格中的连接配置文件,然后点击创建配置文件。
设置以下必要的连接配置文件信息,所有其他设置均保留其默认值:
| 属性 | 值 |
|---|---|
| 配置文件角色 | 来源 |
| 数据库引擎 | MySQL |
| 连接配置文件名称 | mysql-vm |
| 连接配置文件 ID | 保留自动生成的值 |
| 主机名或 IP 地址 | 输入您在上一个任务中复制的 MySQL 源实例的内部 IP(例如 10.128.0.2) |
| 端口 | 3306 |
| 用户名 | admin |
| 密码 | changeme! |
| 区域 |
一个名为 mysql-vm 的新连接配置文件即会显示在连接配置文件列表中。
在左侧窗格中,点击迁移作业,然后点击创建迁移作业。
如要创建迁移作业,请在开始标签页中设置以下值:
| 属性 | 值 |
|---|---|
| 迁移作业名称 | vm-to-cloudsql |
| 迁移作业 ID | 保留自动生成的值 |
| 源数据库引擎 | MySQL |
| 目标区域 | |
| 迁移作业类型 | 一次性 |
所有其他设置均保留默认值。
在指定来源标签页上,为来源连接配置文件选择 mysql-vm。
对于其他设置,请保留默认值。
点击保存并继续。
在定义目标数据库标签页中,为目标集群的类型选择现有实例。
为目标实例选择
点击选择并继续。
再次输入实例名称,然后点击确认并继续。
注意:此步骤可能需要几分钟才能完成。
如果系统要求您重试请求,请点击重试按钮以刷新 Service Networking API。
如果您收到错误消息,但没有重试提示,请务必完成本实验设置和要求部分中的步骤,验证 Service Networking API 是否已启用。
完成此步骤后,系统即会显示一条更新消息,告知您该实例会使用现有的托管式服务连接。
保存此目标实例可能需要几分钟时间。
在确定连接方法标签页中,为连接方法选择 VPC 对等互连。
对于 VPC,选择默认。
Database Migration Service 会使用您为 VPC 网络(在本例中为默认网络)提供的信息配置 VPC 对等互连。
查看迁移作业的详细信息。
点击创建作业。
您无需测试该迁移作业。请注意,现在测试该作业会导致出现错误消息,因为其中存在与目标实例中尚未创建的用户相关联的 DEFINER 条目。您将在下一个任务中创建这些用户。
迁移作业已创建,但尚未开始。您将在后续任务中启动该作业,具体是在 Cloud SQL 目标实例中创建新用户之后。
点击“检查我的进度”以验证是否完成了以下目标:
在 Cloud SQL 中运行迁移作业之前,您应先创建必要的 MySQL 用户。其中包括管理员和超级用户,在发放更宽松的 IAM 权限之前,您需要先通过他们来测试迁移结果。此外,您还需要在开始迁移之前创建与 DEFINER 子句相关联的用户。
在本任务中,您将创建名为 admin、bsmith 和 mhill 的用户。
在 Google Cloud 控制台标题栏的搜索字段中输入 Cloud SQL,然后在搜索结果中点击 Cloud SQL。
展开 mysql-cloudsql-master 实例,然后点击 mysql-cloudsql 实例。
在副本实例菜单中,点击用户。
点击添加用户账号。
在下表中设置相关属性,其他所有设置均保留默认值:
| 属性 | 值 |
|---|---|
| 用户名 | admin |
| 密码 | changeme! |
| 主机名 | 按 IP 地址或地址范围限制主机 |
| 主机 | localhost |
点击添加。
重复执行第 4-6 步,再创建两个具有 localhost 访问权限的用户:
| 用户 | 密码 |
|---|---|
| bsmith | mustchangeasap! |
| mhill | update! |
点击“检查我的进度”以验证是否完成了以下目标:
在 Google Cloud 控制台标题栏的搜索字段中输入数据库迁移,然后在搜索结果中点击数据库迁移。> 迁移作业**。
在左侧窗格中,点击“迁移作业”,然后点击迁移作业 vm-to-cloudsql 以查看详情页面。
点击开始按钮运行迁移作业。
如果系统提示您确认,请点击开始。
点击“检查我的进度”以验证是否完成了以下目标:
在 Google Cloud 控制台标题栏的搜索字段中输入 Cloud SQL,然后在搜索结果中点击 Cloud SQL。
点击名为 mysql-cloudsql 的实例 ID。
在主实例菜单中,点击概览。
向下滚动到连接到此实例面板,然后点击打开 Cloud Shell。
连接到 MySQL 的命令已预先填充在 Cloud Shell 中,命令如下:
如果出现提示,请点击授权以使用 API。
您现在已激活 MySQL 交互式控制台。
请注意您在上一个任务中创建的用户。
| definer | security_type | table_schema | table_name |
|---|---|---|---|
| admin@localhost | DEFINER |
customers_data | customers_single |
| admin@localhost | DEFINER |
sales_data | invoices_storenum_5173 |
| bsmith@localhost | DEFINER |
customers_data | customers_married |
| bsmith@localhost | DEFINER |
sales_data | invoices_storenum_3980 |
| mhill@localhost | INVOKER |
sales_data | invoices_storenum_3656 |
查询返回了 27 行。
点击“检查我的进度”以验证是否完成了以下目标:
您已了解如何在运行 Database Migration Service 作业时迁移 MySQL 用户数据。
详细了解数据迁移、Cloud SQL 数据库和 Database Migration Service:
…可帮助您充分利用 Google Cloud 技术。我们的课程会讲解各项技能与最佳实践,可帮助您迅速上手使用并继续学习更深入的知识。我们提供从基础到高级的全方位培训,并有点播、直播和虚拟三种方式选择,让您可以按照自己的日程安排学习时间。各项认证可以帮助您核实并证明您在 Google Cloud 技术方面的技能与专业知识。
上次更新手册的时间:2025 年 12 月 4 日
本实验的最后测试时间:2025 年 12 月 10 日
版权所有 2026 Google LLC 保留所有权利。Google 和 Google 徽标是 Google LLC 的商标。其他所有公司名和产品名可能是其各自相关公司的商标。
此内容目前不可用
一旦可用,我们会通过电子邮件告知您
太好了!
一旦可用,我们会通过电子邮件告知您
一次一个实验
确认结束所有现有实验并开始此实验