概览
Database Migration Service 会使用迁移作业将数据从源数据库实例迁移到目标数据库实例。为现有目标实例创建迁移作业包括:
- 定义迁移作业的设置
- 选择源数据库连接配置文件
- 选择现有目标数据库实例
- 将现有实例降级为读取副本
- 在源数据库实例和目标数据库实例之间建立连接
- 测试迁移作业,以确保您为作业提供的连接信息有效
如果您想迁移到在 Database Migration Service 之外创建的目标实例,则应考虑以下限制。如需了解详情,请参阅已知限制。
使用 Google Cloud 控制台创建迁移作业
定义迁移作业的设置
前往 Google Cloud 控制台中的迁移作业页面。
点击页面顶部的创建迁移作业。
为迁移作业提供名称。选择一个有助于您识别迁移作业的简单易记的名称。请勿在作业名称中包含敏感信息或个人身份信息。
保留自动生成的迁移作业 ID。
选择源数据库引擎。
选择 AlloyDB for PostgreSQL 作为目标引擎。
选择迁移的目标区域。此区域必须与目标数据库所在的区域相同。选择目标区域后,此选择便无法更改。
选择持续(快照 + 持续更改)作为迁移作业类型。
在在继续之前,请查看前提条件部分,点击打开以查看自动生成的说明,这些说明可帮助您准备好源数据库以进行迁移。最好在此步骤中完成这些前提条件,但您可以在测试或启动迁移作业之前随时完成。如需了解详情,请参阅配置来源。
点击保存并继续。
指定有关来源连接配置文件的信息
-
如果您已创建连接配置文件,请从现有连接配置文件列表中选择它。
如果您尚未创建连接配置文件,请通过点击该下拉列表底部的创建连接配置文件创建一个,然后执行创建来源连接配置文件中的步骤。
建议为 AlloyDB 迁移创建专用连接配置文件。
- 在自定义数据转储配置部分中,点击显示数据转储配置。
数据转储并行速度与源数据库上的负载量相关。您可以使用以下设置:
- 最佳(推荐):平衡的性能,源数据库上的负载最优。
- 最大:提供最高的转储速度,但可能会导致来源数据库的负载增加。
- 最小:占用源数据库上最少的计算资源,但转储吞吐量可能会较慢。
如果您想使用经过调整的数据转储并行设置,请务必在源数据库上增加
max_replication_slots
、max_wal_senders
和max_worker_processes
参数。您可以在创建迁移作业结束时 运行迁移作业测试来验证配置。 - 点击保存并继续。
选择目标实例
1. 从目标集群类型菜单中,选择现有集群。在选择目标集群部分中,选择目标集群。
查看有关集群的信息,然后点击选择并继续。
如需迁移到现有目标数据库,Database Migration Service 会降级目标实例并将其转换为副本。如需表明可以安全地执行降级操作,请在确认窗口中输入目标实例标识符。
点击确认并继续。
在源数据库实例和目标数据库实例之间建立连接
从连接方法下拉菜单中,选择一种网络连接方法。此方法用于指定新建的 AlloyDB 集群连接源数据库的方式。目前的网络连接方法包括IP 许可名单、VPC 对等互连、反向 SSH 隧道和通过云托管虚拟机的 TCP 代理。
- 如果您选择 IP 许可名单网络连接方法,则需要指定目标实例的出站 IP 地址。复制主实例和次要实例的传出 IP 地址,并使用它们为源数据库服务器以及在
pg_hba.conf
文件中配置网络防火墙,以便源可以接受来自这些地址的连接。 如果您选择了反向 SSH 隧道网络连接方法,请选择将托管隧道的 Compute Engine 虚拟机实例。
指定实例后,Google 会提供一个脚本,可执行用于设置源数据库和目标数据库之间的隧道的步骤。您需要在 Google Cloud CLI 中运行该脚本。
从同时连接到源数据库和 Google Cloud 的机器上运行命令。
- 如果您选择 VPC 对等互连网络连接方法,请选择来源数据库所在的 VPC 网络。Cloud SQL 实例将更新以连接到此网络。
如果您选择“通过云托管的虚拟机连接方法”来设置 TCP 代理,请为将托管 TCP 代理的新 Compute Engine 虚拟机实例输入所需的详细信息。
指定详细信息后,Google Cloud 控制台会提供一个脚本,用于执行在源数据库和目标数据库之间设置代理的步骤。您需要在安装了更新版 Google Cloud CLI 的机器上运行该脚本。
运行脚本后,它会输出新创建的虚拟机的专用 IP。输入 IP 地址,然后点击配置并继续。
- 详细了解如何配置连接。
选择网络连接方法并提供该方法的任何其他信息后,点击配置并继续。
测试并创建迁移作业
在最后一步中,查看迁移作业设置、源数据库、目标数据库和连接方法的摘要,然后测试迁移作业设置的有效性。如果遇到任何问题,您可以修改迁移作业的设置。并非所有设置都可以修改。
点击测试作业,验证以下各项:
- 源数据库已根据前提条件正确配置。
- 源实例和目标实例可以相互通信。
- 对目标端所需的专用 IP 地址进行了所有更新。
- 迁移作业有效,源版本和目标版本兼容。
如果测试失败,您可以在流的适当部分解决问题,然后返回重新测试。
即使测试失败,也可以创建迁移作业,但在作业启动后,它可能会在运行期间的某个时间点失败。
点击创建并启动作业以创建迁移作业并立即启动,或点击创建作业以创建迁移作业而不立即启动。
如果作业未在创建时启动,则可以在迁移作业页面中通过点击开始来启动作业。
无论迁移作业何时开始,贵组织都需要为目标实例的存在支付费用。
启动迁移作业后,Database Migration Service 会开始完整转储,并会短暂锁定源数据库。如果您的源位于 Amazon RDS 或 Amazon Aurora 中,则数据库迁移服务还需要在迁移开始时停止写入片刻(大约不到一分钟)。如需了解详情,请参阅 数据转储并行处理注意事项。
迁移作业会添加到迁移作业列表中,您可以直接查看。
继续查看迁移作业。
使用 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 \ --alloydb-cluster=DESTINATION_INSTANCE_ID \ --region=REGION \ --display-name=CONNECTION_PROFILE_NAME
Windows (PowerShell)
gcloud database-migration connection-profiles ` create postgresql CONNECTION_PROFILE_ID ` --no-async ` --alloydb-cluster=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 ^ --alloydb-cluster=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 结合使用,即可查看操作本身的状态。