概览
Database Migration Service 会使用迁移作业将数据从源数据库实例迁移到目标数据库实例。为现有目标实例创建迁移作业包括:
- 定义迁移作业的设置
- 选择源数据库连接配置文件
- 选择现有目标数据库实例
- 将现有实例降级为读取副本
- 在源数据库实例和目标数据库实例之间建立连接
- 测试迁移作业,以确保您为作业提供的连接信息有效
如果您想迁移到在 Database Migration Service 之外创建的目标实例,则应考虑以下限制。例如,Cloud SQL 目标实例必须为空,或者仅包含系统配置数据。如需了解详情,请参阅已知限制。
使用 Google Cloud 控制台创建迁移作业
定义迁移作业的设置
前往 Google Cloud 控制台中的迁移作业。
点击页面顶部的创建迁移作业。
为迁移作业提供名称。选择一个有助于您识别迁移作业的简单易记的名称。请勿在作业名称中包含敏感信息或个人身份信息。
保留自动生成的迁移作业 ID。
选择源数据库引擎。
选择目标数据库引擎。
选择迁移的目标区域。此区域必须与目标数据库所在的区域相同。选择目标区域后,此选择便无法更改。
指定迁移作业类型:一次性(仅快照)或持续(快照 + 持续更改)。
在在继续之前,请查看前提条件部分中,点击打开以查看自动生成的说明,这些说明可帮助您准备好源数据库以进行迁移。最好在此步骤中完成这些前提条件,但您可以在测试或启动迁移作业之前随时完成。如需了解详情,请参阅配置来源。
点击保存并继续。
指定有关来源连接配置文件的信息
-
如果您已创建连接配置文件,请从现有连接配置文件列表中选择它。
如果您尚未创建连接配置文件,请通过点击该下拉列表底部的创建连接配置文件创建一个,然后执行创建来源连接配置文件中的步骤。
- 在自定义数据转储配置部分中,点击显示数据转储配置。
数据转储并行速度与源数据库上的负载量相关。您可以使用以下设置:
- 最佳(推荐):平衡的性能,源数据库上的负载最优。
- 最大:提供最高的转储速度,但可能会导致来源数据库的负载增加。
- 最小:占用源数据库上最少的计算资源,但转储吞吐量可能会较慢。
如果您想使用经过调整的数据转储并行设置,请务必在源数据库上增加
max_replication_slots
、max_wal_senders
和max_worker_processes
参数。您可以在创建迁移作业结束时 运行迁移作业测试来验证配置。 - 点击保存并继续。
选择目标实例
从目标实例类型菜单中,选择现有实例。
在选择目标实例部分,选择您的目标实例。
查看实例详情部分中的信息,然后点击选择并继续。
如需迁移到现有目标数据库,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 实例将更新以连接到此网络。
- 详细了解如何配置连接。
选择网络连接方法并提供该方法的任何其他信息后,点击配置并继续。
测试并创建迁移作业
在最后一步中,查看迁移作业设置、源数据库、目标数据库和连接方法的摘要,然后测试迁移作业设置的有效性。如果遇到任何问题,您可以修改迁移作业的设置。并非所有设置都可以修改。
点击测试作业,验证以下各项:
- 源数据库已根据前提条件正确配置。
- 源实例和目标实例可以相互通信。
- 完成对目标位置所需的任何专用 IP 地址或公共 IP 地址的更新。
- 迁移作业有效,源版本和目标版本兼容。
如果测试失败,您可以在流的适当部分解决问题,然后返回重新测试。
即使测试失败,也可以创建迁移作业,但在作业启动后,它可能会在运行期间的某个时间点失败。
点击创建并启动作业以创建迁移作业并立即启动,或点击创建作业以创建迁移作业而不立即启动。
注意:如果您使用 Terraform 预配了目标数据库,则可能会在迁移作业执行期间遇到配置漂移。在迁移完成之前,请勿尝试重新应用 Terraform 设置。如需了解详情,请参阅 Terraform 配置漂移。
如果作业未在创建时启动,则可以在迁移作业页面中通过点击开始启动作业。
无论迁移作业何时开始,贵组织都需要为目标实例的存在付费。
启动迁移作业后,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 postgresql 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 postgresql 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 postgresql 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,其中包含目标连接配置文件的机器可读标识符。
执行以下命令:
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=CONTINUOUS \
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=CONTINUOUS `
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=CONTINUOUS ^
您应该会收到类似如下所示的响应:
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 结合使用,即可查看操作本身的状态。