Database Migration Service 会使用迁移作业将数据从源数据库实例迁移到目标数据库实例。为现有目标实例创建迁移作业包括:
- 定义迁移作业的设置
- 选择源数据库连接配置文件
- 选择现有目标数据库实例
- 将现有实例降级为读取副本
- 在源数据库实例和目标数据库实例之间建立连接
- 测试迁移作业,以确保您为作业提供的连接信息有效
如果您想迁移到在 Database Migration Service 之外创建的目标实例,则应考虑以下限制。例如,您的 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 物理文件迁移数据库。
- 基于逻辑:如果您想使用
mysqldump
实用程序创建的逻辑备份文件,请选择此选项。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 实例
- 从目标实例类型菜单中,选择现有实例。
- 在选择目标实例部分,选择您的目标实例。
- 查看实例详情部分中的信息,然后点击选择并继续。
- 如需迁移到现有目标数据库,Database Migration Service 会降级目标实例并将其转换为副本。 如需表明可以安全地执行降级操作,请在确认窗口中输入目标实例标识符。
- 点击确认并继续。
在源数据库实例和目标数据库实例之间建立连接
从连接方法下拉菜单中,选择一种网络连接方法。此方法用于指定新建的 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 还需要在迁移开始时停止写入片刻(大约不到一分钟)。如需了解详情,请参阅已知限制。
- 继续查看迁移作业。
使用 Google Cloud CLI 创建迁移作业
使用 Google Cloud CLI 迁移到现有实例时,您必须手动为目标实例创建连接配置文件。如果您使用 Google Cloud 控制台,则无需执行此操作,因为 Database Migration Service 会为您创建和移除目标连接配置文件。
准备工作
在使用 gcloud CLI 创建迁移到现有目标数据库实例的作业之前,请确保您已满足以下条件:
- 创建目标数据库实例。
- 准备源数据库实例。请参阅:
- 配置来源
- 创建来源连接配置文件(创建迁移作业需要来源连接配置文件标识符)。
- 配置连接性
创建目标连接配置文件
运行 gcloud database-migration connection-profiles create
命令,为现有目标实例创建目标连接配置文件:
此示例使用可选的 --no-async
标志,以便同步执行所有操作。这意味着某些命令可能需要一段时间才能完成。您可以跳过 --no-async
标志以异步运行命令。如果您使用的是该版本,则需要使用 gcloud database-migration operations describe
命令来验证操作是否成功。
在使用下面的命令数据之前,请先进行以下替换:
- CONNECTION_PROFILE_ID,其中包含连接配置文件的机器可读标识符。
- 将 REGION 替换为您要在其中保存连接配置文件的区域的标识符。
- DESTINATION_INSTANCE_ID 替换为目标实例的实例标识符。
- (可选)CONNECTION_PROFILE_NAME,用于为连接配置文件提供直观易懂的名称。此值会显示在 Google Cloud 控制台中。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration connection-profiles \ create mysql CONNECTION_PROFILE_ID \ --no-async \ --cloudsql-instance=DESTINATION_INSTANCE_ID \ --region=REGION \ --display-name=CONNECTION_PROFILE_NAME
Windows (PowerShell)
gcloud database-migration connection-profiles ` create mysql CONNECTION_PROFILE_ID ` --no-async ` --cloudsql-instance=DESTINATION_INSTANCE_ID ` --region=REGION ` --display-name=CONNECTION_PROFILE_NAME
Windows (cmd.exe)
gcloud database-migration connection-profiles ^ create mysql CONNECTION_PROFILE_ID ^ --no-async ^ --cloudsql-instance=DESTINATION_INSTANCE_ID ^ --region=REGION ^ --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]
创建迁移作业
此示例使用可选的 --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,其中包含目标连接配置文件的机器可读标识符。
- MIGRATION_JOB_TYPE 替换为迁移作业的类型。允许的值有两个:
ONE_TIME
或CONTINUOUS
。如需了解详情,请参阅 迁移类型。
执行以下命令:
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]
降级目标数据库
Database Migration Service 要求目标数据库实例在迁移期间作为读取副本运行。在启动迁移作业之前,请运行 gcloud database-migration migration-jobs demote-destination
命令以降级目标数据库实例。
在使用下面的命令数据之前,请先进行以下替换:
- 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。
如果您不知道标识符,可以使用
gcloud database-migration migration-jobs list
命令列出给定区域中的所有迁移作业并查看其标识符。 - REGION 与存储连接配置文件的区域的标识符。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration migration-jobs \ demote-destination MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration migration-jobs ` demote-destination MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ demote-destination MIGRATION_JOB_ID ^ --region=REGION
结果
该操作会以异步方式执行。 因此,此命令会返回一个表示长时间运行的操作的 操作实体:
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: demote-destination name: OPERATION_ID
如需查看操作是否成功,您可以查询返回的操作对象,或检查迁移作业的状态:
- 使用
gcloud database-migration migration-jobs describe
命令查看迁移作业的状态。 - 将
gcloud database-migration operations describe
与 OPERATION_ID 搭配使用,即可查看操作本身的状态。
管理迁移作业
此时,您的迁移作业已配置并连接到目标数据库实例。您可以使用 verify
、start
、stop
、restart
和 resume
操作进行管理。
验证迁移作业
我们建议您先运行 gcloud database-migration migration-jobs verify
命令,验证迁移作业。
在使用下面的命令数据之前,请先进行以下替换:
- 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。
如果您不知道标识符,可以使用
gcloud database-migration migration-jobs list
命令列出给定区域中的所有迁移作业并查看其标识符。 - REGION 与存储连接配置文件的区域的标识符。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration migration-jobs \ verify MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration migration-jobs ` verify MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ verify MIGRATION_JOB_ID ^ --region=REGION
结果
该操作会以异步方式执行。 因此,此命令会返回一个表示长时间运行的操作的 操作实体:
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: verify name: OPERATION_ID
如需查看操作是否成功,您可以查询返回的操作对象,或检查迁移作业的状态:
- 将
gcloud database-migration migration-jobs describe
命令与 MIGRATION_JOB_ID 结合使用,即可查看迁移作业的状态。 - 将
gcloud database-migration operations describe
命令与 OPERATION_ID 结合使用,即可查看操作本身的状态。
启动迁移作业
通过运行 gcloud database-migration migration-jobs start
命令启动迁移作业。
在使用下面的命令数据之前,请先进行以下替换:
- 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。
如果您不知道标识符,可以使用
gcloud database-migration migration-jobs list
命令列出给定区域中的所有迁移作业并查看其标识符。 - REGION 与存储连接配置文件的区域的标识符。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration migration-jobs \ start MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration migration-jobs ` start MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ start MIGRATION_JOB_ID ^ --region=REGION
结果
该操作会以异步方式执行。 因此,此命令会返回一个表示长时间运行的操作的 操作实体:
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: start name: OPERATION_ID
如需查看操作是否成功,您可以查询返回的操作对象,或检查迁移作业的状态:
- 将
gcloud database-migration migration-jobs describe
命令与 MIGRATION_JOB_ID 结合使用,即可查看迁移作业的状态。 - 将
gcloud database-migration operations describe
命令与 OPERATION_ID 结合使用,即可查看操作本身的状态。
提升迁移作业
迁移到达变更数据捕获 (CDC) 阶段后,您可以将目标数据库实例从读取副本升级为独立实例。运行 gcloud database-migration migration-jobs promote
命令:
在使用下面的命令数据之前,请先进行以下替换:
- 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。
如果您不知道标识符,可以使用
gcloud database-migration migration-jobs list
命令列出给定区域中的所有迁移作业并查看其标识符。 - REGION 与存储连接配置文件的区域的标识符。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration migration-jobs \ promote MIGRATION_JOB_ID \ --region=REGION
Windows (PowerShell)
gcloud database-migration migration-jobs ` promote MIGRATION_JOB_ID ` --region=REGION
Windows (cmd.exe)
gcloud database-migration migration-jobs ^ promote MIGRATION_JOB_ID ^ --region=REGION
结果
该操作会以异步方式执行。 因此,此命令会返回一个表示长时间运行的操作的 操作实体:
done: false metadata: '@type': type.googleapis.com/google.cloud.clouddms.v1.OperationMetadata apiVersion: v1 createTime: '2024-02-20T12:20:24.493106418Z' requestedCancellation: false target: MIGRATION_JOB_ID verb: start name: OPERATION_ID
- 将
gcloud database-migration migration-jobs describe
命令与 MIGRATION_JOB_ID 结合使用,即可查看迁移作业的状态。 - 将
gcloud database-migration operations describe
命令与 OPERATION_ID 结合使用,即可查看操作本身的状态。