- 集群降级:Database Migration Service 会降级目标集群,将其配置为源数据库的副本。
- 避免对迁移数据执行写入操作:请勿在目标集群中对迁移作业所涉及的表或数据库执行写入操作(例如
INSERT、UPDATE、DELETE或 DDL 架构更改)。此类操作可能会导致与来自源的数据发生复制冲突。 - 管理数据库用户:您可以随时使用标准
psql命令或通过 Google Cloud 控制台中的 AlloyDB for PostgreSQL 创建和管理数据库用户。如需了解详情,请参阅 AlloyDB for PostgreSQL 文档中的管理数据库用户。
如需了解详情,请参阅现有目标集群的已知限制。
Database Migration Service 通过迁移作业将数据从源数据库迁移到目标 AlloyDB for PostgreSQL 集群。为现有目标集群创建迁移作业包括:
- 定义迁移作业的设置
- 定义来源设置并选择要迁移的数据库
- 选择现有目标 AlloyDB for PostgreSQL 集群
- 正在将现有集群降级,以将其配置为源数据库的副本
- 在源数据库和目标数据库之间建立连接
- 测试迁移作业,以确保您提供的连接信息有效
准备工作
在创建到现有 AlloyDB for PostgreSQL 目标集群的迁移作业之前,请确保:
- 验证此迁移类型是否可以支持您的场景。 例如,如果要迁移到在 Database Migration Service 之外创建的集群,则 AlloyDB for PostgreSQL 目标集群必须为空或仅包含系统配置数据。 如需了解详情,请参阅已知限制。
创建目标 AlloyDB for PostgreSQL 集群及其主实例。 请参阅 AlloyDB for PostgreSQL 文档中的创建集群及其主实例。
- 准备源数据库实例。请参阅以下页面:
如需创建到现有目标集群的迁移作业,请执行以下操作:
控制台
定义迁移作业的设置
- 在 Google Cloud 控制台中,前往迁移作业页面。
- 点击创建迁移作业。
系统会打开迁移作业配置向导页面。 此向导包含多个面板,可引导您完成每个配置步骤。
您可以随时点击保存并退出,暂停创建迁移作业。您在此时之前输入的所有数据都会保存在草稿迁移作业中。 您可以稍后完成迁移作业草稿。
- 在开始使用页面上,输入以下信息:
- 迁移作业名称
这是迁移作业的人类可读名称。此值会显示在 Google Cloud 控制台中。
- 迁移任务 ID
这是迁移作业的机器可读标识符。 您可以使用此值通过 Database Migration Service Google Cloud CLI 命令或 API 处理迁移作业。
- 从源数据库引擎列表中,选择 PostgreSQL。
- 从目标数据库引擎列表中,选择 AlloyDB for PostgreSQL。
- 选择您保存迁移作业的区域。
Database Migration Service 是一款完全区域性的产品,这意味着与迁移相关的所有实体(源和目标连接配置文件、迁移作业、目标集群)都必须保存在单个区域中。选择现有目标集群所在的区域。 选择目标区域后,此选择便无法更改。
- 选择持续(快照 + 持续更改)作为迁移服务类型。到 AlloyDB for PostgreSQL 的同构迁移仅支持持续迁移。
- 迁移作业名称
- 点击保存并继续。
指定有关来源连接配置文件的信息
在定义来源页面上,执行以下步骤:
- 从来源连接配置文件下拉菜单中,选择源数据库的连接配置文件。
- 在自定义数据转储配置部分中,点击显示数据转储配置。
数据转储并行速度与源数据库上的负载量有关:
- 最佳(推荐):性能均衡,源数据库负载最佳。
- 最大:提供最高的转储速度,但可能会导致源数据库负载增加。
- 最低:占用源数据库上最少的计算资源,但转储吞吐量可能较低。
如果您选择调整后的数据转储并行设置,请务必增加源数据库上的
max_replication_slots、max_wal_senders和max_worker_processes参数。 - 点击保存并继续。
选择 AlloyDB for PostgreSQL 目标集群
- 从目标实例类型菜单中,选择现有集群。
- 在选择目标集群部分,选择目标 AlloyDB for PostgreSQL 集群。
-
查看集群详情部分中的信息,然后点击选择并继续。
如需迁移到现有目标数据库,Database Migration Service 会降级目标集群并将其配置为副本。 如需表明可以安全地执行降级,请在确认窗口中输入目标集群标识符。
- 点击确认并继续。
在源数据库实例和目标集群之间建立连接
从连接方法下拉菜单中,选择一种网络连接方法。此方法定义了 AlloyDB for PostgreSQL 目标集群如何连接到源数据库。目前的网络连接方法包括 IP 许可清单、反向 SSH 隧道、Private Service Connect 接口、VPC 对等互连以及通过云托管虚拟机的 TCP 代理。
| 如果您想使用… | 请执行以下操作 |
|---|---|
| IP 许可清单网络连接方法 | 复制目标集群主实例的两个出站公共 IP 地址,并用它们为源数据库服务器配置网络防火墙,同时修改 pg_hba.conf 文件。 |
| 反向 SSH 隧道网络连接方法 | 选择将托管隧道的 Compute Engine 虚拟机实例。
指定实例后,Google 会提供一个脚本,用于执行在源数据库和目标数据库之间设置隧道的步骤。从同时连接到源数据库和 Google Cloud的机器上,在 Google Cloud CLI 中运行脚本。 |
| Private Service Connect 接口连接方法 | Database Migration Service 会自动建立所需的连接。 只有当您拥有启用了 Private Service Connect 且具有网络连接的目标集群时,此连接方法才可用。如需详细了解 Private Service Connect,请参阅 AlloyDB for PostgreSQL 文档中的配置 Private Service Connect。 |
| VPC 对等互连网络连接方法 | 选择源数据库所在的 VPC 网络。AlloyDB for PostgreSQL 集群使用专用服务访问通道连接到此网络。 |
| 通过云端托管式虚拟机的 TCP 代理连接方法 | 输入将托管 TCP 代理的新 Compute Engine 虚拟机实例所需的详细信息。
指定详细信息后, Google Cloud 控制台会提供一个脚本,用于在源数据库和目标数据库之间设置代理。在装有更新版 Google Cloud CLI 的机器上运行该脚本。 运行脚本后,输入新创建的虚拟机的专用 IP 地址,然后点击配置并继续。 |
选择并配置网络连接后,点击配置并继续。
配置迁移数据库
您可以从源实例迁移所有数据库,也可以仅选择特定数据库。
- 从要迁移的数据库列表中,选择以下选项之一:
- 所有数据库:选择源中存在的所有数据库。
- 特定数据库:可让您从源端的所有数据库中选择特定数据库。
如果您想迁移特定数据库,请过滤显示的列表,然后选择您希望 Database Migration Service 迁移到目标位置的数据库。
如果未显示列表,而是显示数据库发现错误,请点击重新加载。如果数据库发现失败,作业会迁移所有数据库。您可以继续创建迁移作业,稍后再修正连接错误。
- 点击保存并继续。
测试、创建和运行迁移作业
在最后一步中,查看迁移作业设置、来源、目标和连接性的摘要,然后测试迁移作业设置的有效性。如果遇到任何问题,您可以修改迁移作业的设置。并非所有设置都可以修改。
- 在测试并创建迁移作业页面上,点击测试作业。
如果测试失败,请在流程的适当部分解决问题,然后返回重新测试。如需了解如何排查迁移作业测试失败的问题,请参阅诊断 AlloyDB for PostgreSQL 的问题。
- 迁移作业测试完成后,点击创建并启动作业以创建迁移作业并立即启动,或点击创建作业以创建迁移作业但不立即启动。
如果作业在创建时未启动,则可以从迁移作业页面点击启动来启动作业。无论迁移作业何时开始,您的组织都需要为目标集群的存在付费。
您的迁移正在进行中。启动迁移作业后,Database Migration Service 会开始初始完整转储和持续复制。 如需了解详情,请参阅已知限制。
- 继续查看迁移作业。
Google Cloud CLI
使用 Google Cloud CLI 迁移到现有集群时,您必须手动为目标集群创建连接配置文件。使用 Google Cloud 控制台时,您无需执行此操作,因为 Database Migration Service 会为您创建和移除目标连接配置文件。
创建目标连接配置文件。
通过运行gcloud database-migration connection-profiles create命令,为现有目标集群创建目标连接配置文件(点击链接可展开):gcloud database-migration connection-profiles create postgresql此示例使用可选的
--no-async标志,以便同步执行所有操作。这意味着某些命令可能需要一段时间才能完成。您可以跳过--no-async标志,以异步方式运行命令。如果这样做,您需要使用gcloud database-migration operations describe命令来验证操作是否成功。在使用下面的命令数据之前,请先进行以下替换:
- 将 DEST_CONN_ID 替换为目标连接配置文件标识符。
- 将 REGION 替换为您要在其中保存连接配置文件的区域。此区域应与目标集群区域相同。
- DEST_CLUSTER 替换为预先创建的 AlloyDB for PostgreSQL 目标集群的 ID。
- 将 DEST_USER 替换为目标数据库中迁移用户的用户名。
- 将 DEST_PASSWORD 替换为目标数据库中迁移用户的密码。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \ --region=REGION \ --alloydb-cluster=DEST_CLUSTER \ --username=DEST_USER \ --password=DEST_PASSWORD \ --role=DESTINATION \ --no-async
Windows (PowerShell)
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ` --region=REGION ` --alloydb-cluster=DEST_CLUSTER ` --username=DEST_USER ` --password=DEST_PASSWORD ` --role=DESTINATION ` --no-async
Windows (cmd.exe)
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ^ --region=REGION ^ --alloydb-cluster=DEST_CLUSTER ^ --username=DEST_USER ^ --password=DEST_PASSWORD ^ --role=DESTINATION ^ --no-async
您应该会收到类似如下所示的响应:
Waiting for connection profile [DEST_CONN_ID] to be created with [OPERATION_ID] Waiting for operation [OPERATION_ID] to complete...done. Created connection profile DEST_CONN_ID [OPERATION_ID]
创建迁移作业。
以下示例展示了在源数据库和目标数据库之间使用专用 IP 连接的迁移场景。如果您使用其他连接类型(例如 IP 许可清单、VPC 对等互连或反向 SSH 隧道),请务必添加所需的标志,例如--static-ip、--peer-vpc或--vm、--vm-ip、--vm-port和--vpc。 如需了解详情,请参阅配置连接和 Google Cloud CLI 示例。
运行以下命令(点击链接可展开):gcloud database-migration migration-jobs create此示例使用可选的
--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命令修改使用--databases-filter标志创建的迁移作业。
执行以下命令:
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命令(点击链接可展开):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 搭配使用,可查看操作本身的状态。
- 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。
可选:验证迁移作业。
此时,您的迁移作业已配置并连接到目标集群。您可以使用verify、start、stop、restart和resume操作来管理它。 我们建议您先运行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
结果
该操作以异步方式执行。 因此,此命令会返回一个表示长时间运行的操作的 操作实体:
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 替换为您的迁移作业标识符。
启动迁移作业。
通过运行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
结果
该操作以异步方式执行。 因此,此命令会返回一个表示长时间运行的操作的 操作实体:
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命令(点击链接可展开):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: promote name: OPERATION_ID
如需查看操作是否成功,您可以查询返回的操作对象,或检查迁移作业的状态:
- 将
gcloud database-migration migration-jobs describe命令与 MIGRATION_JOB_ID 搭配使用,可查看迁移作业的状态。 - 将
gcloud database-migration operations describe命令与 OPERATION_ID 搭配使用,可查看操作本身的状态。
- 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。