创建迁移作业包括以下步骤:
- 定义迁移作业的设置。
- 指定您为源数据库创建的连接配置文件(来源连接配置文件)的相关信息。
- 为目标 Cloud SQL 数据库实例定义设置并创建实例。
- 在源数据库实例和目标数据库实例之间建立连接。
- 测试迁移作业,以确保您为作业提供的连接信息有效。
如需创建到新的目标实例的迁移作业,请执行以下操作:
控制台
定义迁移作业的设置
- 在 Google Cloud 控制台中,前往迁移作业页面。
- 点击创建迁移作业。
系统随即会打开迁移作业配置向导页面。 此向导包含多个面板,可引导您完成每个配置步骤。
您可以随时点击保存并退出,暂停迁移作业的创建。您在此之前输入的所有数据都会保存在迁移作业草稿中。 您可以稍后完成草稿迁移作业。
- 在开始页面上,输入以下信息:
- 迁移作业名称
这是迁移作业的直观易懂的名称。此值会显示在 Google Cloud 控制台中。
- 迁移作业 ID
这是您的迁移作业的机器可读标识符。 您可以使用此值通过 Database Migration Service Google Cloud CLI 命令或 API 处理迁移作业。
- 从源数据库引擎列表中,选择 MySQL。
目标数据库引擎字段会自动填充,且无法更改。
- 选择要保存迁移作业的区域。
Database Migration Service 是一款完全区域性产品,这意味着与迁移相关的所有实体(源和目标连接配置文件、迁移作业、目标数据库)都必须保存在单个区域中。根据需要数据的服务(例如 Compute Engine 实例、App Engine 应用及其他服务)的位置选择区域。选择目标区域后,此选择便无法更改。
- 迁移作业名称
- 点击保存并继续。
指定有关来源连接配置文件的信息
在定义来源页面上,执行以下步骤:
- 从来源连接配置文件下拉菜单中,选择源数据库的连接配置文件。
- 在自定义完全转储配置部分,点击修改配置。
- 在修改完全转储配置面板中,从完全转储方法下拉菜单中选择以下任一选项:
- 基于物理文件:如果您想使用 Percona XtraBackup 实用程序提供自己的备份文件,请选择此选项。此方法需要额外的准备步骤。如需有关使用 Percona XtraBackup 生成的物理备份文件的完整指南,请参阅 使用 Percona XtraBackup 物理文件迁移数据库。
- 基于逻辑:如果您想使用
mysqlshell
实用程序创建的逻辑备份文件,请选择此选项。Database Migration Service 可以为您自动生成此备份文件,您也可以提供自己的副本。
- 修改其余转储设置。执行以下操作之一:
- 如果您使用的是实体备份文件,请在提供文件夹中点击浏览,然后选择您上传完整转储文件的文件夹。请务必选择包含完整备份文件的专用文件夹,而不是存储桶本身。
如果您使用逻辑备份文件,请配置数据转储并行级别或转储标志。
展开此部分可查看完整的逻辑备份文件步骤
在选择生成转储文件的方式部分,使用以下选项之一:
自动生成初始转储文件(推荐)
建议您选择此选项,因为 Database Migration Service 始终会在迁移作业创建并启动后生成初始数据库转储文件。
Database Migration Service 会使用此文件重现源数据库的原始对象定义和表数据,以便将这些信息迁移到目标 Cloud SQL 数据库实例。
如果您使用自动生成的转储,请在配置数据转储操作部分中选择 Database Migration Service 应执行的操作类型:
- 数据转储并行处理:使用高性能并行处理选项,在迁移到 MySQL 5.7 或 8 版时可用。
数据并行处理的速度与源数据库上产生的负载量有关:
- 最佳(推荐):平衡的性能,源数据库上的负载最优。
- 最大:提供最高的转储速度,但可能会导致来源数据库的负载增加。
- 最小:占用源数据库上最少的计算资源,但转储吞吐量可能会较慢。
- 转储标志:此选项与数据转储并行互斥。
您可以使用此设置直接为用于创建转储文件的
mysqldump
实用程序配置标志。如需添加标志,请执行以下操作:
- 点击添加标志。
选择以下某个标志:
add-locks:
此标志会使用LOCK TABLES
和UNLOCK TABLES
语句将转储文件中包含的每个表括起来。 这样一来,当转储文件加载到目标实例中时,插入速度就会加快。ignore-error:
使用此标志可输入以英文逗号分隔的错误编号列表。 这些数字表示mysqldump
实用程序会忽略的错误。max-allowed-packet:
使用此标志设置 MySQL 客户端与源 MySQL 数据库之间通信的缓冲区大小上限。 缓冲区的默认大小为 24 MB;大小上限为 1 GB。
- 点击完成。
- 针对您要添加的每个标志重复上述步骤。
如需移除标记,请点击包含标记的行右侧的回收站图标。
- 数据转储并行处理:使用高性能并行处理选项,在迁移到 MySQL 5.7 或 8 版时可用。
自行提供
不建议使用此选项,因为默认情况下,Database Migration Service 会在运行迁移作业时执行初始转储。
如果您想使用自己的转储文件,请选择提供您自己的文件,点击浏览,选择您的文件(如果您使用多个文件,则选择整个 Cloud Storage 文件夹),然后点击选择。
确保转储是在过去 24 小时内生成的,并且符合 转储要求。
- 点击保存并继续。
配置并创建目标 Cloud SQL 实例
- 在指定目标位置页面上,从目标实例类型下拉菜单中,选择新实例。定义所有相关设置:
- 在目标实例 ID 字段中,为 Cloud SQL 实例提供标识符,或使用自动生成的标识符。
请勿在标识符中包含敏感信息或个人身份信息。无需在实例名称中包含项目 ID。此操作将在适当的位置(例如在日志文件中)自动完成。
- 在密码字段中,为目标 Cloud SQL 实例提供字母数字密码。这是实例中
root
管理员账号的密码。您可以手动输入密码,也可以点击生成以让 Database Migration Service 自动为您创建密码。
- 从数据库版本下拉菜单中,选择目标实例的数据库版本。
点击显示次要版本可查看所有次要版本。 详细了解跨版本迁移支持。
- 为目标实例选择 Cloud SQL for MySQL 版本。
有两个选项可供选择:Cloud SQL for MySQL 企业版和 Cloud SQL for MySQL 企业 Plus 版。
Cloud SQL for MySQL 版本具有不同的功能集、可用机器类型和价格。请务必参阅 Cloud SQL 文档,选择适合您需求的版本。如需了解详情,请参阅 Cloud SQL for MySQL 版本简介。
- 区域菜单会显示您在开始使用页面上选择的区域。
如果您要将实例配置为高可用性实例,请选择多个可用区(高可用性)。 您可以同时选择主要可用区和次要可用区。 在创建实例期间使用次要可用区时,适用以下条件:
- 主要可用区默认为任意,次要可用区默认为任意(不同于主要可用区)。
- 如果同时指定主要可用区和次要可用区,则它们必须是不同的可用区。
- 在连接部分,选择为目标实例添加公共 IP 地址还是专用 IP 地址。
您可以将实例配置为同时具有这两种类型的 IP 地址,但迁移至少需要一种类型的 IP 地址。
选择以下某个选项:
- 如果您想使用 VPC 对等互连或反向 SSH 隧道进行迁移,请选择
专用 IP。
如需启用专用 IP 连接,请确保您满足所有其他网络要求。
展开此部分可查看完整的专用 IP 要求。
- Service Networking API 已启用。您可以使用 Google Cloud 控制台启用 Service Networking API。
- 您拥有
servicenetworking.services.addPeering
IAM 权限。 - 您已为项目
配置了专用服务访问通道,为此您需要拥有
compute.networkAdmin
IAM 角色。 - 您的项目中至少有一个非旧版 VPC 网络或共享 VPC 网络。
- 如果您使用的是
共享 VPC 网络,则还需要执行以下操作:
- 为宿主项目启用 Service Networking API。
- 将您的用户添加到宿主项目中。
- 为用户授予宿主项目中的 compute.networkAdmin IAM 角色。
- 选择要建立对等互连的关联 VPC 网络。如果您计划使用 VPC 对等互连连接到迁移来源,请选择实例所在的 VPC。
- 如果从未为所选 VPC 配置代管式服务网络,您可以选择选择一个 IP 地址范围并点击连接,也可以使用自动选择的 IP 地址范围并点击分配并连接。
- 如果您想使用 IP 许可名单通过互联网进行迁移,请选择
公共 IP。
(可选)在公共 IP 下,点击已获授权的网络字段,然后授权网络或代理连接到 Cloud SQL 实例。只有您提供的地址才能授权网络使用。 请参阅 Cloud SQL 文档中的配置公共 IP。
您可以在后续步骤中配置迁移作业连接。 如需详细了解可用的网络连接方法,请参阅 配置网络连接。
- 如果您想使用 VPC 对等互连或反向 SSH 隧道进行迁移,请选择
专用 IP。
- 在目标实例 ID 字段中,为 Cloud SQL 实例提供标识符,或使用自动生成的标识符。
- 选择 Cloud SQL 实例的机器类型。磁盘大小必须等于或大于源数据库的大小。详细了解 MySQL 机器类型。
- 对于 Cloud SQL for MySQL 企业 Plus 版:如果您想在目标数据库中使用数据缓存功能,请选中启用数据缓存复选框。
数据缓存是一项适用于 Cloud SQL for MySQL 企业 Plus 版实例的可选功能,可向目标数据库添加高速本地固态硬盘。 此功能可能会给您的 Cloud SQL 带来额外费用。 如需详细了解数据缓存,请参阅 Cloud SQL 文档中的数据缓存概览。
- 指定 Cloud SQL 实例的存储类型。您可以选择 固态硬盘 (SSD) 或普通硬盘 (HDD)。
- 指定 Cloud SQL 实例的存储容量(以 GB 为单位)。
确保实例有足够的存储容量来处理源数据库中的数据。您可以随时增加此容量,但不能减少。
(可选)为目标实例配置数据加密选项或资源标签。
展开此部分可查看可选步骤。
点击显示可选配置,然后执行以下操作:
指定您是否要管理从源迁移到目标的数据的加密。默认情况下,您的数据使用由 Google Cloud管理的密钥进行加密。 如果您希望管理加密,可以使用由客户管理的加密密钥 (CMEK)。为此,请执行以下操作:
- 选中使用客户管理的加密密钥 (CMEK) 复选框。
- 从选择客户管理的密钥菜单中,选择您的 CMEK。
如果您没有看到密钥,请点击输入密钥资源名称以提供要使用的密钥的资源名称。 密钥资源名称示例:
projects/my-project-name/locations/my-location/keyRings/my-keyring/cryptoKeys/my-key
。- 添加要应用于数据库服务器的所有必要标志。 如果可能,请确保创建的目标 Cloud SQL 实例上的数据库标志与源数据库上的数据库标志相同。详细了解 MySQL 支持的数据库标志。
- 添加特定于 Cloud SQL 实例的任何
标签。
标签可帮助您整理实例。例如,您可以按成本中心或环境来整理标签。您的账单中也会包含标签,便于您按标签查看费用分布情况。
- 点击创建目标并继续。 Database Migration Service 现在正在创建 Cloud SQL 目标实例。 此过程可能需要几分钟时间。
在源数据库实例和目标数据库实例之间建立连接
从连接方法下拉菜单中,选择一种网络连接方法。此方法用于指定新建的 Cloud SQL 实例连接源数据库的方式。目前的网络连接方法包括 IP 许可名单、反向 SSH 隧道和 VPC 对等互连。
如果您想使用… | 请执行以下操作 |
---|---|
IP 许可名单网络连接方法, | 您需要指定目标实例的传出 IP 地址。如果您创建的 Cloud SQL 实例是高可用性实例,请添加主实例和次要实例的传出 IP 地址。 |
反向 SSH 隧道网络连接方法, | 您需要选择将托管隧道的 Compute Engine 虚拟机实例。
指定实例后,Google 会提供一个脚本,可执行用于设置源数据库和目标数据库之间的隧道的步骤。您需要在 Google Cloud CLI 中运行该脚本。 从同时连接到源数据库和 Google Cloud的机器上运行命令。 |
VPC 对等互连网络连接方法 | 您需要选择源数据库所在的 VPC 网络。Cloud SQL 实例将更新以连接到此网络。 |
选择并配置网络连接后,点击配置并继续。
测试、创建和运行迁移作业
在最后一步中,查看迁移作业设置、源数据库、目标数据库和连接方法的摘要,然后测试迁移作业设置的有效性。如果遇到任何问题,您可以修改迁移作业的设置。并非所有设置都可以修改。
-
在测试并创建迁移作业页面上,点击测试作业。
如果测试失败,您可以在流的适当部分解决问题,然后返回重新测试。如需了解如何排查失败的迁移作业测试,请参阅 诊断 MySQL 问题。
-
迁移作业测试完成后,点击创建并启动作业以创建迁移作业并立即启动,或点击创建作业以创建迁移作业但不立即启动。
如果作业在创建时未启动,则可以在迁移作业页面中点击开始启动作业。无论迁移作业何时开始,只要目标实例存在,贵组织就需要支付相应费用。
您的迁移目前正在进行中。启动迁移作业后,Database Migration Service 会开始完整转储,并会短暂锁定源数据库。 如果您的源位于 Amazon RDS 或 Amazon Aurora 中,则 Database Migration Service 还需要在迁移开始时停止写入片刻(大约不到一分钟)。如需了解详情,请参阅已知限制。
- 继续查看迁移作业。
gcloud
创建目标连接配置文件。
使用 Google Cloud CLI 迁移到新的目标实例时,您可以一次性创建目标实例和连接配置文件。
运行以下命令(点击链接可展开):gcloud database-migration connection-profiles create cloudsql
此示例使用可选的
--no-async
标志,以便同步执行所有操作。这意味着某些命令可能需要一段时间才能完成。您可以跳过--no-async
标志以异步运行命令。如果您使用的是该版本,则需要使用gcloud database-migration operations describe
命令来验证操作是否成功。在使用下面的命令数据之前,请先进行以下替换:
- CONNECTION_PROFILE_ID,其中包含连接配置文件的机器可读标识符。
- 将 DATABASE_VERSION 替换为您要在目标实例中使用的 MySQL 版本。数据库版本以字符串的形式指定,其中包含主要版本和次要版本。例如:
MYSQL_8_0
、MYSQL_8_0_32
、MYSQL_8_0_36
。如需了解所有可能的 MySQL 版本,请参阅 --database-version 标志参考文档。
- (可选)EDITION默认情况下,您使用 Google Cloud CLI 创建的新实例使用 Cloud SQL for MySQL 企业 Plus 版。如果您打算使用 Cloud SQL for MySQL 企业 Plus 版,请确保您的区域受该版本支持。请参阅 Cloud SQL for MySQL 企业 Plus 版区域支持。
您可以使用
--edition
标志和以下某个值来更改版本:enterprise-plus
(适用于 Cloud SQL for MySQL 企业 Plus 版)enterprise
(适用于 Cloud SQL for MySQL 企业版)
-
TIER 替换为您要使用的 Cloud SQL 机器类型的名称。
机器类型以遵循 Cloud SQL 惯例的字符串指定,例如
db-n1-standard-1
、db-perf-optimized-N-2
。 如需查看可与 Google Cloud CLI 搭配使用的可用机器类型及其标识符的完整列表,请参阅 Cloud SQL for MySQL 文档中的 机器类型部分。默认情况下,使用 Google Cloud CLI 创建的实例使用 Cloud SQL for MySQL 企业 Plus 版,该版本提供不同的机器类型。如果您想使用仅在 Cloud SQL for MySQL 企业版中提供的机器类型,请使用可选的
--edition=enterprise
标志指定版本。 - REGION 替换为您要在其中保存连接配置文件的区域的标识符。
默认情况下,您使用 Google Cloud CLI 创建的新实例使用 Cloud SQL for MySQL 企业 Plus 版。如果您打算使用 Cloud SQL for MySQL 企业 Plus 版,请确保您的区域受该版本支持。请参阅 Cloud SQL for MySQL 企业 Plus 版区域支持。 您可以使用可选的
--edition
标志更改版本。 - (可选)CONNECTION_PROFILE_NAME,用于为连接配置文件提供直观易懂的名称。此值会显示在 Google Cloud 控制台中。
- 网络配置
默认情况下,您使用 Google Cloud CLI 创建的新实例会分配公共 IP 地址,并配置为使用公共 IP 连接。您可以使用其他连接方法。 如需了解详情,请参阅配置连接性。
如果您想使用公共 IP 连接,则无需使用其他标志。如果您想将专用 IP 连接与 VPC 网络对等互连或反向 SSH 隧道搭配使用,请确保您满足启用专用 IP 连接的以下额外网络要求,并在命令中添加额外的标志。
展开此部分可查看完整的专用 IP 要求。
- Service Networking API 已启用。您可以使用 Google Cloud 控制台启用 Service Networking API。
- 您拥有
servicenetworking.services.addPeering
IAM 权限。 - 您已为项目
配置了专用服务访问通道,为此您需要拥有
compute.networkAdmin
IAM 角色。 - 您的项目中至少有一个非旧版 VPC 网络或共享 VPC 网络。
- 如果您使用的是
共享 VPC 网络,则还需要执行以下操作:
- 为宿主项目启用 Service Networking API。
- 将您的用户添加到宿主项目中。
- 为用户授予宿主项目中的 compute.networkAdmin IAM 角色。
如果您想使用专用 IP 连接(使用 VPC 网络对等互连或在 Compute Engine 虚拟机上使用反向 SSH 隧道),请添加以下其他标志:
-
--no-enable-ip-v4
:(可选)不为目标实例分配公共 IP 地址。您可以为目标实例同时分配公共 IP 地址和专用 IP 地址,但如果您使用专用 IP 连接,则可能不需要公共 IP 地址。 -
--private-network
:如需向目标实例分配专用 IP 地址,请指定您要分配专用 IP 地址的虚拟私有云的名称。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration connection-profiles \ create mysql CONNECTION_PROFILE_ID \ --no-async \ --region=REGION \ --database-version=DATABASE_VERSION \ --tier=TIER \ --display-name=CONNECTION_PROFILE_NAME
Windows (PowerShell)
gcloud database-migration connection-profiles ` create mysql CONNECTION_PROFILE_ID ` --no-async ` --region=REGION ` --database-version=DATABASE_VERSION ` --tier=TIER ` --display-name=CONNECTION_PROFILE_NAME
Windows (cmd.exe)
gcloud database-migration connection-profiles ^ create mysql CONNECTION_PROFILE_ID ^ --no-async ^ --region=REGION ^ --database-version=DATABASE_VERSION ^ --tier=TIER ^ --display-name=CONNECTION_PROFILE_NAME
您应该会收到类似如下所示的响应:
Waiting for connection profile [CONNECTION_PROFILE_ID] to be created with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Created connection profile CONNECTION_PROFILE_ID [OPERATION_ID]
创建迁移作业。
如果您使用 VPC 对等互连或反向 SSH 隧道连接,请务必添加所需的标志,例如--peer-vpc
或--vm
、--vm-ip
、--vm-port
、--vpc
。 如需了解详情,请参阅 配置连接和 Google Cloud CLI 示例。
运行以下命令(点击链接即可展开):gcloud database-migration migration-jobs create
此示例使用可选的
--no-async
标志,以便同步执行所有操作。这意味着某些命令可能需要一段时间才能完成。您可以跳过--no-async
标志以异步运行命令。如果您使用的是该版本,则需要使用gcloud database-migration operations describe
命令来验证操作是否成功。在使用下面的命令数据之前,请先进行以下替换:
- MIGRATION_JOB_ID,其中包含可供机器读取的迁移作业标识符。您可以使用此值通过 Database Migration Service Google Cloud CLI 命令或 API 处理迁移作业。
- REGION 替换为您要将迁移作业保存到的区域标识符。
- MIGRATION_JOB_NAME 为迁移作业提供一个直观易懂的名称。此值显示在 Google Cloud 控制台中的 Database Migration Service 中。
- SOURCE_CONNECTION_PROFILE_ID,其中包含来源连接配置文件的机器可读标识符。
- DESTINATION_CONNECTION_PROFILE_ID,其中包含目标连接配置文件的机器可读标识符。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration migration-jobs \ create MIGRATION_JOB_ID \ --no-async \ --region=REGION \ --display-name=MIGRATION_JOB_NAME \ --source=SOURCE_CONNECTION_PROFILE_ID \ --destination=DESTINATION_CONNECTION_PROFILE_ID \ --type=MIGRATION_JOB_TYPE
Windows (PowerShell)
gcloud database-migration migration-jobs ` create MIGRATION_JOB_ID ` --no-async ` --region=REGION ` --display-name=MIGRATION_JOB_NAME ` --source=SOURCE_CONNECTION_PROFILE_ID ` --destination=DESTINATION_CONNECTION_PROFILE_ID ` --type=MIGRATION_JOB_TYPE
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ create MIGRATION_JOB_ID ^ --no-async ^ --region=REGION ^ --display-name=MIGRATION_JOB_NAME ^ --source=SOURCE_CONNECTION_PROFILE_ID ^ --destination=DESTINATION_CONNECTION_PROFILE_ID ^ --type=MIGRATION_JOB_TYPE
您应该会收到类似如下所示的响应:
Waiting for migration job [MIGRATION_JOB_ID] to be created with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Created migration job MIGRATION_JOB_ID [OPERATION_ID]