管理迁移作业

在 Google Cloud 控制台中,您可以针对具有相同 状态的迁移作业批量执行操作。您可以在 Google Cloud 控制台中以及使用 Google Cloud CLI 对单个迁移作业执行操作。

您可以对迁移作业执行以下操作:

操作 说明
修改

您可以修改非草稿迁移作业,以进行以下更改:

开始 启动不处于正在运行或正在启动状态的迁移作业。请参阅 迁移作业状态。
停止 停止正在运行的迁移作业。数据迁移已暂停。 迁移作业状态首先会更改为 Stopping,然后更改为 Stopped。您可以恢复、删除或 提升已停止的迁移作业。
恢复 如果您在增量加载期间停止迁移作业,则可以稍后恢复该作业。当您继续执行迁移作业时,Database Migration Service 会提取迁移作业停止时累积的所有事务日志文件。
重启

您可以重启遇到错误且无法继续进行数据复制的迁移作业。

重启迁移作业的结果取决于其失败的原因:

  • 无法从错误中恢复的失败迁移作业会重试整个迁移过程,包括初始的完整转储阶段。
  • 如果复制因一个或多个源数据库或目标数据库上出现错误而失败,则重启迁移会擦除目标数据库中的所有数据。
  • 如果您在开始迁移后为其他数据库创建新文件夹,并 将其添加到所选的待迁移数据库,那么重新开始迁移也会将新数据库复制到目标实例中。
删除 迁移作业可以删除。结果取决于作业的状态:
  • 如果迁移作业处于 Completed 状态,则从迁移作业列表中删除相应记录。
  • 如果迁移作业处于任何其他状态,则可以选择删除目标 Cloud SQL 实例/主要实例对。
提升 在迁移过程中,您的目标 Cloud SQL 实例会降级为由 Database Migration Service 管理的读取副本。在提升迁移之前,您无法对目标数据库执行任何读取或写入操作。如需了解详情,请参阅 提升迁移。
查看 您可以查看迁移作业中特定数据库的详细信息,也可以查看您选择要迁移的所有数据库的详细信息。

开始迁移作业

迁移作业完全创建后(即未保存为草稿状态),您可以随时启动该作业以开始迁移数据。

如需启动迁移作业,请执行以下步骤:

控制台

  1. 在 Google Cloud 控制台中,前往迁移作业页面。

    前往“迁移作业”

  2. 在作业标签页中,点击要启动的迁移作业的显示名称。

    系统会打开迁移作业详情页面。

  3. 点击开始。
  4. 在对话框中,点击开始。

gcloud

在使用下面的命令数据之前,请先进行以下替换:

  • 将 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

如需查看操作是否成功,您可以查询返回的操作对象, 也可以检查迁移作业的状态:

停止迁移作业

您可以随时执行以下步骤来停止 正在运行的迁移作业:

控制台

  1. 在 Google Cloud 控制台中,前往迁移作业页面。

    前往“迁移作业”

  2. 在作业标签页中,点击要启动的迁移作业的显示名称。

    系统会打开迁移作业详情页面。

  3. 点击停止。
  4. 在该对话框中,点击停止。

gcloud

在使用下面的命令数据之前,请先进行以下替换:

  • 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。

    如果您不知道标识符,可以使用 gcloud database-migration migration-jobs list 命令列出给定区域中的所有迁移作业并查看其标识符。

  • 将 REGION 替换为保存连接配置文件的区域的标识符。

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud database-migration migration-jobs \
stop MIGRATION_JOB_ID \
  --region=REGION

Windows (PowerShell)

gcloud database-migration migration-jobs `
stop MIGRATION_JOB_ID `
  --region=REGION

Windows (cmd.exe)

gcloud database-migration migration-jobs ^
stop 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: stop
name: OPERATION_ID
如需查看操作是否成功,您可以查询返回的操作对象,或检查迁移作业的状态:

恢复迁移作业

您可以执行以下步骤来恢复 已停止的迁移作业:

控制台

  1. 在 Google Cloud 控制台中,前往迁移作业页面。

    前往“迁移作业”

  2. 在作业标签页中,点击要启动的迁移作业的显示名称。

    系统会打开迁移作业详情页面。

  3. 点击恢复。
  4. 在对话框中,点击恢复。

gcloud

在使用下面的命令数据之前,请先进行以下替换:

  • 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。

    如果您不知道标识符,可以使用 gcloud database-migration migration-jobs list 命令列出给定区域中的所有迁移作业并查看其标识符。

  • 将 REGION 替换为保存连接配置文件的区域的标识符。

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud database-migration migration-jobs \
resume MIGRATION_JOB_ID \
  --region=REGION

Windows (PowerShell)

gcloud database-migration migration-jobs `
resume MIGRATION_JOB_ID `
  --region=REGION

Windows (cmd.exe)

gcloud database-migration migration-jobs ^
resume 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: resume
name: OPERATION_ID
如需查看操作是否成功,您可以查询返回的操作对象,或检查迁移作业的状态:

重启迁移作业

如需重启迁移作业,请执行以下步骤:

控制台

  1. 在 Google Cloud 控制台中,前往迁移作业页面。

    前往“迁移作业”

  2. 在作业标签页上,点击要重启的迁移作业的显示名称。

    系统会打开迁移作业详情页面。

  3. 执行以下重启操作之一:
    • 如果您想重启迁移中包含的所有数据库,请在迁移作业的工具栏中点击重启。

      系统会显示“重启迁移作业”对话框。

    • 如果您只想重启特定数据库,请使用数据库名称旁边的复选框选择这些数据库,然后在数据库标签页上点击重启。

      系统会显示一个对话框,其中包含您要重启的数据库的数量。

  4. 在对话框中,点击重新启动。

gcloud

在使用下面的命令数据之前,请先进行以下替换:

  • 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。

    如果您不知道标识符,可以使用 gcloud database-migration migration-jobs list 命令列出指定区域中的所有迁移作业,并查看其标识符。

  • 将 REGION 替换为保存迁移作业的区域的标识符。
  • 可选:默认情况下,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 \
restart MIGRATION_JOB_ID \
  --region=REGION

Windows (PowerShell)

gcloud database-migration migration-jobs `
restart MIGRATION_JOB_ID `
  --region=REGION

Windows (cmd.exe)

gcloud database-migration migration-jobs ^
restart 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: restart
name: OPERATION_ID
如需查看操作是否成功,您可以查询返回的操作对象,或检查迁移作业的状态:

更新草稿迁移作业

如需完成迁移作业的创建,请执行以下步骤:

控制台

  1. 在 Google Cloud 控制台中,前往迁移作业页面。

    前往“迁移作业”

  2. 在草稿标签页中,点击要完成创建的迁移作业的显示名称。

    此时会打开迁移作业创建向导。

  3. 完成迁移作业的创建。请参阅 创建迁移作业。

gcloud

此示例使用可选的 --no-async 标志,以便同步执行所有操作。这意味着,某些命令可能需要一段时间才能完成。您可以跳过 --no-async 标志,以异步方式运行命令。如果使用,您需要使用 gcloud database-migration operations describe 命令验证操作是否成功。

在使用下面的命令数据之前,请先进行以下替换:

  • 将 MIGRATION_JOB_ID 替换为迁移作业的机器可读标识符。
  • 将 REGION 替换为您要在其中保存连接配置文件的区域标识符。
  • 将 MIGRATION_JOB_NAME 替换为迁移作业的人类可读名称。此值会显示在 Google Cloud 控制台中的 Database Migration Service 中。
  • SOURCE_CONNECTION_PROFILE_ID 替换为来源连接配置文件的机器可读标识符。
  • DESTINATION_CONNECTION_PROFILE_ID 替换为目标连接配置文件的机器可读标识符。
  • 将 COMMA_SEPARATED_DATABASE_ID_LIST 替换为您要迁移的 MySQL 的数据库标识符的英文逗号分隔列表。

执行以下命令:

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 \
  --databases-filter=COMMA_SEPARATED_DATABASE_ID_LIST \
  --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 `
  --databases-filter=COMMA_SEPARATED_DATABASE_ID_LIST `
  --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 ^
  --databases-filter=COMMA_SEPARATED_DATABASE_ID_LIST ^
  --type=CONTINUOUS

您应该会收到类似如下所示的响应:

Waiting for migration job [MIGRATION_JOB_ID]
to be updated with [OPERATION_ID]

Waiting for operation [OPERATION_ID] to complete...done.

Updated migration job MIGRATION_JOB_ID [OPERATION_ID]

在迁移作业中添加或移除数据库

只要迁移作业不处于 Running 状态,您就可以在 Google Cloud 控制台中或使用 Google Cloud CLI 向迁移作业添加数据库或从中移除数据库:

  • 迁移作业必须处于 Not started、Stopped 或 Failed 状态。 如果迁移作业处于 Running 状态,则必须先停止迁移作业,然后才能修改数据库选择。
  • 重要提示:如果您在已开始的迁移作业中添加或移除数据库,Database Migration Service 会将迁移进度重置为完整转储阶段。为迁移作业选择的所有数据库(包括已迁移的数据库)都会在目标 Cloud SQL 实例上删除,并从源实例重新转储。
  • 从迁移作业中移除数据库后,Database Migration Service 会停止复制该数据库的更改,但不会删除目标实例上已为该数据库迁移的任何数据。

如需在迁移作业中添加或移除数据库,请执行以下步骤:

控制台

  1. 在 Google Cloud 控制台中,前往迁移作业页面。

    前往“迁移作业”

  2. 在作业标签页中,点击迁移作业的显示名称。

    系统会打开迁移作业详情页面。

  3. 如果迁移作业状态为正在运行,请点击停止,在对话框中确认,然后等待状态变为已停止。
  4. 点击修改。
  5. 在选择要迁移的对象部分中,使用要迁移的数据库菜单在所有数据库和特定数据库之间进行选择。如果您选择特定数据库,请使用复选框选择要添加的数据库,或清除要移除的数据库。
  6. 点击保存并重启(如果作业尚未启动,则点击保存并启动)以应用更改并运行迁移作业,或点击保存。

gcloud

此示例使用可选的 --no-async 标志,以便所有操作都同步执行。这意味着,某些命令可能需要一段时间才能完成。您可以跳过 --no-async 标志,以异步方式运行命令。如果这样做,您需要使用 gcloud database-migration operations describe 命令来验证操作是否成功。

在使用下面的命令数据之前,请先进行以下替换:

  • 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。

    如果您不知道标识符,可以使用 gcloud database-migration migration-jobs list 命令列出指定区域中的所有迁移作业,并查看其标识符。

  • 将 REGION 替换为保存迁移作业的区域的标识符。
  • DATABASE_LIST,并以逗号分隔列表列出您希望迁移作业迁移的所有数据库名称(例如 my-db-1,my-db-2)。如需将迁移作业切换回迁移源实例上的所有数据库,请将 --databases-filter=DATABASE_LIST 替换为 --all-databases。

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud database-migration migration-jobs \
update MIGRATION_JOB_ID \
  --region=REGION \
  --databases-filter=DATABASE_LIST

Windows (PowerShell)

gcloud database-migration migration-jobs `
update MIGRATION_JOB_ID `
  --region=REGION `
  --databases-filter=DATABASE_LIST

Windows (cmd.exe)

gcloud database-migration migration-jobs ^
update MIGRATION_JOB_ID ^
  --region=REGION ^
  --databases-filter=DATABASE_LIST

您应该会收到类似如下所示的响应:

Waiting for migration job [MIGRATION_JOB_ID]
to be updated with [OPERATION_ID]

Waiting for operation [OPERATION_ID] to complete...done.

Updated migration job MIGRATION_JOB_ID [OPERATION_ID]

修改非草稿迁移作业

对于非草稿迁移作业,您可以使用 Google Cloud CLI 更改迁移作业的显示名称:

此示例使用可选的 --no-async 标志,以便同步执行所有操作。这意味着某些命令可能需要一段时间才能完成。您可以跳过 --no-async 标志,以异步运行命令。 如果这样做,您需要使用 gcloud database-migration operations describe 命令来验证操作是否成功。

在使用下面的命令数据之前,请先进行以下替换:

  • 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。

    如果您不知道标识符,可以使用 gcloud database-migration migration-jobs list 命令列出给定区域中的所有迁移作业并查看其标识符。

  • 将 REGION 替换为保存连接配置文件的区域的标识符。
  • 将 MIGRATION_JOB_NAME 替换为迁移作业的人类可读名称。此值会显示在 Google Cloud 控制台中的 Database Migration Service 中。

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud database-migration migration-jobs \
update MIGRATION_JOB_ID \
  --region=REGION \
  --display-name=MIGRATION_JOB_NAME

Windows (PowerShell)

gcloud database-migration migration-jobs `
update MIGRATION_JOB_ID `
  --region=REGION `
  --display-name=MIGRATION_JOB_NAME

Windows (cmd.exe)

gcloud database-migration migration-jobs ^
update MIGRATION_JOB_ID ^
  --region=REGION ^
  --display-name=MIGRATION_JOB_NAME

您应该会收到类似如下所示的响应:

Waiting for migration job [MIGRATION_JOB_ID]
to be updated with [OPERATION_ID]

Waiting for operation [OPERATION_ID] to complete...done.

Updated migration job MIGRATION_JOB_ID [OPERATION_ID]

测试迁移作业

在运行迁移作业之前,您可以执行测试操作,以检查 Database Migration Service 是否可以访问所有必要的源实体和目标实体。在 Google Cloud 控制台中,您只能测试在迁移作业创建向导中创建的草稿迁移作业(请参阅 创建迁移作业)。

借助 gcloud CLI,您可以测试已创建但尚未启动的迁移作业。

在使用下面的命令数据之前,请先进行以下替换:

  • 将 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

如需查看操作是否成功,您可以查询返回的操作对象,或检查迁移作业的状态:

查看特定数据库的迁移详情

迁移作业完全创建后(即未保存为草稿状态),您可以使用 Google Cloud CLI 查看该迁移作业中特定数据库的详细信息。

此示例使用可选的 --no-async 标志,以便同步执行所有操作。这意味着某些命令可能需要一段时间才能完成。您可以跳过 --no-async 标志,以异步运行命令。 如果这样做,您需要使用 gcloud database-migration operations describe 命令来验证操作是否成功。

在使用下面的命令数据之前,请先进行以下替换:

  • 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。

    如果您不知道标识符,可以使用 gcloud database-migration migration-jobs list 命令列出指定区域中的所有迁移作业,并查看其标识符。

  • 将 REGION 替换为保存连接配置文件的区域的标识符。
  • 将 DATABASE_NAME 替换为数据库的名称。

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud database-migration objects lookup --migration-job=MIGRATION_JOB_ID \
  --region=REGION --database=DATABASE_NAME

Windows (PowerShell)

gcloud database-migration objects lookup --migration-job=MIGRATION_JOB_ID `
  --region=REGION --database=DATABASE_NAME

Windows (cmd.exe)

gcloud database-migration objects lookup --migration-job=MIGRATION_JOB_ID ^
  --region=REGION --database=DATABASE_NAME

结果

输出类似于以下内容:

createTime: '2025-03-21T17:05:19.211441641Z'
name: PROJECT_ID
phase: FULL_DUMP
sourceObject:
  database: DATABASE_NAME
  type: DATABASE
state: RUNNING
如需查看操作是否成功,您可以查询返回的操作对象,或检查迁移作业的状态:

查看特定数据库的迁移详情

当迁移作业完全创建完毕(即未保存为草稿状态)后,您可以使用 Google Cloud CLI 列出为该迁移作业选择的所有数据库,并查看有关这些数据库的详细信息。

此示例使用可选的 --no-async 标志,以便同步执行所有操作。这意味着,某些命令可能需要一段时间才能完成。您可以跳过 --no-async 标志,以异步方式运行命令。如果使用,您需要使用 gcloud database-migration operations describe 命令验证操作是否成功。

在使用下面的命令数据之前,请先进行以下替换:

  • 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。

    如果您不知道标识符,可以使用 gcloud database-migration migration-jobs list 命令列出给定区域中的所有迁移作业并查看其标识符。

  • 将 REGION 替换为保存连接配置文件的区域的标识符。

执行以下命令:

Linux、macOS 或 Cloud Shell

gcloud database-migration objects list --migration-job=MIGRATION_JOB_ID \
  --region=REGION

Windows (PowerShell)

gcloud database-migration objects list --migration-job=MIGRATION_JOB_ID `
  --region=REGION

Windows (cmd.exe)

gcloud database-migration objects list --migration-job=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': 'db1', 'type': 'DATABASE'}  RUNNING  FULL_DUMP
{'database': 'db2', 'type': 'DATABASE'}  STOPPED  CDC        {'code': 1, 'message': 'Internal error'}
如需查看操作是否成功,您可以查询返回的操作对象,或检查迁移作业的状态: