概览
Database Migration Service 会使用迁移作业将数据从源数据库实例迁移到目标数据库实例。
为现有目标实例创建迁移作业包括以下步骤:
- 定义迁移作业的设置
- 选择源数据库连接配置文件
- 选择现有目标数据库实例
- 将现有实例降级以将其转换为读取副本
- 在源数据库实例和目标数据库实例之间建立连接
- 测试迁移作业,以确保您为作业提供的连接信息有效
如果您想迁移到在 Database Migration Service 之外创建的目标实例,则应考虑某些限制。例如,Cloud SQL 目标实例必须为空或仅包含系统配置数据。如需了解详情,请参阅已知限制。
Database Migration Service 向导可帮助您创建迁移作业。此向导包含以下窗格:使用入门、定义来源、创建目标位置、定义连接方法、配置迁移数据库以及测试并创建迁移作业。本页面的以下部分介绍了如何填充每个窗格。
使用 Google Cloud 控制台创建迁移作业
定义迁移作业的设置
- 前往 Google Cloud 控制台中的迁移作业。 
- 点击页面顶部的创建迁移作业。 
- 为迁移作业提供名称。选择一个便于您识别迁移作业的友好名称。请勿在作业名称中包含敏感信息或个人身份信息。 
- 保留自动生成的迁移作业 ID。 
- 选择源数据库引擎。 
- 选择目标数据库引擎。 
- 选择迁移的目标区域。此区域必须与目标数据库所在的区域相同。 选择目标区域后,便无法再更改此选择。 
- 指定迁移作业类型:一次性(仅限快照)或持续(快照 + 正在进行的更改)。 
- 在继续之前,请查看前提条件部分中,点击打开以查看自动生成的说明,这些说明可帮助您准备源数据库以进行迁移。最好在此步骤中完成这些前提条件,但您可以在测试或启动迁移作业之前随时完成。 如需了解详情,请参阅配置来源。 
- 点击保存并继续。 
指定有关来源连接配置文件的信息
- 
    如果您已创建连接配置文件,请从现有连接配置文件列表中选择它。 如果您尚未创建连接配置文件,请通过点击下拉列表底部的创建连接配置文件创建一个,然后执行创建来源连接配置文件中的步骤。 
- 在自定义数据转储配置部分中,点击显示数据转储配置。
  数据转储并行速度与源数据库上的负载量有关。您可以使用以下设置: - 最佳(推荐):平衡的性能和源数据库负载。
- 最大:提供最快的转储速度,但可能会导致源数据库的负载增加。
- 最低:占用源数据库上最少的计算资源,但可能会降低转储吞吐量。
 如果您想使用调整后的数据转储并行设置,请务必增加源数据库中的 max_replication_slots、max_wal_senders和max_worker_processes参数。您可以在迁移作业创建结束时 运行迁移作业测试来验证配置。
- 点击保存并继续。
选择目标实例
- 在目标实例类型菜单中,选择现有实例。
- 在选择目标实例部分中,选择目标实例。
- 查看实例详情部分中的信息,然后点击选择并继续。
- 如需迁移到现有目标数据库,Database Migration Service 会将目标实例降级并将其转换为副本。 如需表明可以安全地执行降级,请在确认窗口中输入目标实例标识符。
- 点击确认并继续。
在源数据库实例和目标数据库实例之间建立连接
- 从连接方法菜单中,选择一种网络连接方法。此方法用于指定新建的 Cloud SQL 实例连接源数据库的方式。当前的网络连接方法包括 IP 许可名单、反向 SSH 隧道、Private Service Connect 接口和 VPC 对等互连。
- 如果您选择“IP 许可名单”网络连接方法,则需要指定目标实例的出站 IP 地址。如果您创建的 Cloud SQL 实例是高可用性实例,请同时添加主实例和辅助实例的传出 IP 地址。
- 如果您选择反向 SSH 隧道网络连接方法,请选择将托管隧道的 Compute Engine 虚拟机实例。 - 指定实例后,Google 会提供一个脚本,该脚本可执行用于设置源数据库与目标数据库之间的隧道的步骤。您需要在 Google Cloud CLI 中运行该脚本。 - 在可同时连接到源数据库和 Google Cloud 的机器上运行这些命令。 
- 如果您使用其中一种专用 IP 连接方法,请选择 VPC 对等互连或 PSC 接口。
- 如果您选择 VPC 对等互连网络连接方法,请选择源数据库所在的 VPC 网络。Cloud SQL 实例将更新以连接到此网络。
 
- 选择网络连接方法并提供该方法的任何其他信息后,点击配置并继续。
配置迁移数据库
您可以选择要迁移的数据库。
- 在要迁移的数据库列表中,选择以下选项之一:
- 所有数据库:选择源中的所有数据库。
- 特定数据库:可让您从来源中的所有数据库中选择特定数据库。
 
- 如果您想迁移特定数据库,可以过滤显示的列表,然后选择您希望 Database Migration Service 迁移到目标位置的数据库。 - 如果未显示该列表,并且系统显示数据库发现错误,请点击重新加载。如果数据库发现失败,作业会迁移所有数据库。您可以继续创建迁移作业,稍后再修正连接错误。 
- 点击保存并继续。
测试并创建迁移作业
在最后一步中,查看迁移作业设置、源、目标和连接方法的摘要,然后测试迁移作业设置的有效性。如果遇到任何问题,您可以修改迁移作业的设置。并非所有设置都可以修改。
- 点击 TEST JOB 以验证以下内容: - 源数据库已根据前提条件正确配置。
- 源实例和目标实例可以相互通信。
- 已完成对目标位置所需的专用或公共 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 替换为目标连接配置文件的机器可读标识符。
- 可选:Database Migration Service 默认会迁移源中的所有数据库。如果您只想迁移特定数据库,请使用 - --databases-filter标志,并以英文逗号分隔的列表形式指定这些数据库的标识符。- 例如: - --databases-filter=my-business-database,my-other-database- 您可以使用 - gcloud database-migration migration-jobs update命令修改之前使用- --database-filter flag创建的迁移作业。
执行以下命令:
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
结果
该操作以异步方式执行。 因此,此命令会返回一个表示长时间运行的操作的 Operation 实体:
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 搭配使用,即可查看操作本身的状态。
管理迁移作业
此时,您的迁移作业已配置完毕,并已连接到目标数据库实例。您可以使用以下操作来管理该功能:
- 可选:验证迁移作业。 
 建议您先运行- gcloud database-migration migration-jobs verify命令来验证迁移作业。- 如需了解详情,请展开即可下部分: - 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 - 结果- 该操作以异步方式执行。 因此,此命令会返回一个表示长时间运行的操作的 Operation 实体: - 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 搭配使用,即可查看操作本身的状态。
 
- 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。
    
- 可选:检索有关所选迁移数据库的信息。 
 当您迁移特定数据库时,Database Migration Service 需要使用- --database-filter标志检索您为迁移作业选择的数据库的详细信息。- 在开始迁移作业之前,请运行 - gcloud database-migration migration-jobs fetch-source-objects命令。- 如需了解详情,请展开即可下部分: - gcloud database-migration migration-jobs fetch-source-objects- 在使用下面的命令数据之前,请先进行以下替换: - 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。
    如果您不知道标识符,可以使用 gcloud database-migration migration-jobs list命令列出指定区域中的所有迁移作业,并查看其标识符。
- 将 REGION 替换为保存连接配置文件的区域的标识符。
 - 执行以下命令: - Linux、macOS 或 Cloud Shell- gcloud database-migration migration-jobs \ fetch-source-objects MIGRATION_JOB_ID \ --region=REGION - Windows (PowerShell)- gcloud database-migration migration-jobs ` fetch-source-objects MIGRATION_JOB_ID ` --region=REGION - Windows (cmd.exe)- gcloud database-migration migration-jobs ^ fetch-source-objects MIGRATION_JOB_ID ^ --region=REGION - 结果- 输出类似于以下内容: - Waiting for migration job MIGRATION_JOB_ID to fetch source objects with OPERATION_ID Waiting for operation OPERATION_ID to complete...done. SOURCE_OBJECT STATE PHASE ERROR {'database': 'DATABASE_NAME', 'type': 'DATABASE'} NOT_SELECTED PHASE_UNSPECIFIED {'database': 'DATABASE_NAME', 'type': 'DATABASE'} STOPPED CDC {'code': 1, 'message': 'Internal error'}- 如需查看操作是否成功,您可以查询返回的操作对象, 也可以检查迁移作业的状态: - 使用 
  gcloud database-migration migration-jobs describe命令搭配 MIGRATION_JOB_ID 可查看迁移作业的状态。
- 将 
  gcloud database-migration operations describe命令与 OPERATION_ID 搭配使用,即可查看操作本身的状态。
 
- 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。
    
- 启动迁移作业。 
 运行- gcloud database-migration migration-jobs start命令,启动迁移作业。- 如需了解详情,请展开即可下部分: - 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 - 结果- 该操作以异步方式执行。 因此,此命令会返回一个表示长时间运行的操作的 Operation 实体: - 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 搭配使用,即可查看操作本身的状态。
 
- 将 MIGRATION_JOB_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
结果
该操作以异步方式执行。 因此,此命令会返回一个表示长时间运行的操作的 Operation 实体:
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 搭配使用,即可查看操作本身的状态。