管理迁移作业

您可以从迁移作业列表、单个迁移作业详情页面或直接从 Cloud SQL 中的目标实例页面执行操作。在 Google Cloud 控制台中,如果多个作业都具有相同的 状态,则可以同时对这些作业执行操作。您可以在 Google Cloud 控制台中以及使用 Google Cloud CLI 对单个迁移作业执行操作。

您可以对迁移作业整体执行某些操作,也可以对迁移作业中选定的单个数据库执行其他操作(例如重启、升级或查看详细信息)。

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

操作 说明
修改

如需进行以下更改,请修改迁移作业:

  • 在迁移所有数据库和迁移特定数据库之间切换。
  • 在任何迁移状态或阶段,您都可以根据需要多次添加或移除数据库。移除数据库后,Database Migration Service 会停止该数据库的复制过程,但不会将其从目标实例中移除。 如需了解详情,请参阅添加或移除数据库。
  • 修改正在运行的迁移作业的数据转储并行级别。您必须在做出更改后保存并重启作业。
  • 使用 gcloud CLI 更新迁移作业显示名称。如需了解详情,请参阅修改非草稿迁移作业。
开始 启动已创建但未启动的迁移作业。您可以启动不处于正在运行或正在启动状态的作业。请参阅 迁移作业状态。
停止

随时停止正在运行的迁移作业。数据迁移会停止,迁移作业状态会更改为 Stopping,随后更改为 Stopped。

  • 如果迁移作业在初始完整转储阶段停止,您可以删除或重启该作业。不过,WAL 日志将继续在源数据库的复制槽中累积,这最终可能导致源数据库耗尽磁盘可用空间。此外,Database Migration Service 会继续轮询复制延迟时间指标,并继续消耗网络流量。
  • 如果迁移作业在变更数据捕获 (CDC) 阶段停止,您可以恢复、提升或删除该作业。

监控源数据库服务器的复制槽和磁盘可用空间。 删除迁移作业会清理来源上的所有复制槽并停止网络流量。

恢复

如果持续迁移作业在 CDC 阶段停止,则可以继续执行。继续执行迁移作业会重启复制在停止期间累积的事件和数据更改。

重启

如果迁移作业失败且无法恢复,或者在初始完整转储阶段停止,您可以从头开始重启该作业。

重启迁移作业会擦除受错误影响的所有目标数据库中的所有数据,并执行新的完整转储。如果自迁移开始以来在源 PostgreSQL 服务器上创建了新数据库,则重启迁移也会将这些新数据库复制到目标实例中。

您可以重启迁移作业中的所有数据库,也可以仅重启所选数据库。

删除

删除迁移作业。您可以删除处于任何状态的迁移作业。 不过,您只能在 Google Cloud 控制台中删除正在运行的迁移作业。

结果取决于作业的状态:

  • 如果迁移作业状态为 Completed,则系统会从迁移作业列表中删除该记录。
  • 如果迁移作业处于任何其他状态, Google Cloud 控制台中会提供一个选项,供您选择是否删除目标 Cloud SQL 实例。

删除迁移作业会移除源数据库上分配的复制槽,并停止网络流量。删除迁移作业不会删除源数据库。

推广 将目标实例从副本提升为独立主数据库实例,并将目标实例与来源实例断开连接。您可以提升整个迁移作业,也可以提升所选的单个数据库。

如需了解详情,请参阅 提升迁移。

查看特定数据库 查看为迁移配置的特定数据库的迁移详情。
查看所有数据库 查看已配置为迁移的所有数据库的迁移详情。

开始迁移作业

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

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

控制台

  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

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

停止迁移作业

您可以随时停止 正在运行的迁移作业。停止迁移作业后,数据迁移会暂停,迁移作业状态会更改为 Stopping,随后更改为 Stopped。

如需停止迁移作业,请执行以下步骤:

控制台

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

恢复迁移作业

如果持续迁移作业在变更数据捕获 (CDC) 阶段停止,您可以恢复该作业。继续执行迁移作业会重启复制在作业停止时在源数据库上累积的事件和数据更改。

如需恢复 已停止的迁移作业,请执行以下步骤:

控制台

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

重启迁移作业

如果迁移作业失败且无法恢复,或者在初始完整转储阶段停止,您可以从头开始重启该作业。

重启迁移会擦除受错误影响的所有目标数据库中的所有数据,并启动新的完整转储。如果自迁移开始以来,源 PostgreSQL 服务器上创建了新数据库,则重启迁移也会将这些新数据库复制到目标实例中。

您可以重启迁移作业中的所有数据库,也可以仅重启特定数据库。

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

控制台

  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 命令修改使用 --databases-filter 标志创建的迁移作业。

执行以下命令:

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

结果

该操作以异步方式执行。 因此,此命令会返回一个表示长时间运行的操作的 操作实体:

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 替换为要迁移的 PostgreSQL 数据库标识符的英文逗号分隔列表。

执行以下命令:

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]

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

您可以在任何迁移状态或阶段添加或移除数据库,次数不限。移除数据库后,Database Migration Service 会停止该数据库的复制过程,但不会将其从目标 Cloud SQL 实例中移除。

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

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

    前往“迁移作业”

  2. 在作业标签页中,点击迁移作业的显示名称。 系统会打开迁移作业详情页面。
  3. 点击修改。
  4. 在选择要迁移的数据库部分中,使用复选框选择要添加到迁移作业的新数据库,或清除要移除的数据库。
  5. 点击保存。

修改非草稿迁移作业

如需修改正在运行的迁移作业的数据转储并行级别,请参阅并行性注意事项。更改并行处理设置后,您必须保存并重启迁移作业。

对于非草稿迁移作业,您可以使用 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'}
如需查看操作是否成功,您可以查询返回的操作对象,或检查迁移作业的状态: