使用 Database Migration Service 创建 AlloyDB for PostgreSQL 目标集群时,该集群会预配为具有主实例的 AlloyDB for PostgreSQL 集群。在迁移过程中执行某些操作可能会导致迁移错误。在迁移到新的目标集群时,请注意以下操作注意事项:
- 避免对迁移数据执行写入操作:请勿在目标集群中对迁移作业所涉及的表或数据库执行写入操作(例如
INSERT、UPDATE、DELETE或 DDL 架构更改)。此类操作可能会导致与来自源的数据发生复制冲突。 - 管理数据库用户:您可以随时使用标准
psql命令或通过 Google Cloud 控制台中的 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 是一款完全区域性的产品,这意味着与迁移相关的所有实体(源和目标连接配置文件、迁移作业、目标数据库)都必须保存在单个区域中。根据需要数据的服务(例如 Compute Engine 实例、App Engine 应用及其他服务)的位置选择区域。选择目标区域后,此选择便无法更改。
- 指定迁移服务类型:持续(快照 + 持续更改)。AlloyDB for PostgreSQL 同构迁移仅支持持续迁移。
- 查看为您的环境生成的前提条件。确保您的源数据库配置正确。如需了解详情,请参阅配置源数据库。
- 迁移作业名称
- 点击保存并继续。
指定有关来源连接配置文件的信息
在定义来源页面上,执行以下步骤:
- 从来源连接配置文件下拉菜单中,选择源数据库的连接配置文件(或点击创建连接配置文件;请参阅创建来源连接配置文件)。
- 在自定义数据转储配置部分中,点击显示数据转储配置。
数据转储并行处理的速度与源数据库上的负载量有关。您可以使用以下设置:
- 最佳(推荐):性能均衡,源数据库负载最佳。
- 最大:提供最高的转储速度,但可能会导致源数据库负载增加。
- 最低:占用源数据库上最少的计算资源,但转储吞吐量可能较低。
如果您选择调整后的并行设置,请务必增加源数据库上的
max_replication_slots、max_wal_senders和max_worker_processes参数。您可以在迁移作业创建结束时运行迁移作业测试,以验证配置。 - 点击保存并继续。
配置并创建 AlloyDB for PostgreSQL 目标集群
现在,您需要为迁移作业创建一个新的 AlloyDB for PostgreSQL 目标集群。 集群是 AlloyDB for PostgreSQL 中的顶级资源。它们包含一个主实例,用于对您在迁移过程中创建的数据库进行读写访问。
- 在定义目标数据库页面上,从目标实例类型下拉菜单中选择新集群。
- 选择集群类型。Database Migration Service 支持高可用性 AlloyDB for PostgreSQL 集群,这些集群可以从一个区域中的多个可用区提供数据,在初始预配期间没有读取池。
- 点击继续。
- 配置集群:
- 在集群 ID 字段中,输入 AlloyDB for PostgreSQL 集群的标识符,或使用自动生成的标识符。
请勿在标识符中包含敏感信息或个人身份信息。无需在集群名称中包含项目 ID。此操作将在适当的位置自动完成。
- 在密码字段中,为目标 AlloyDB for PostgreSQL 集群提供字母数字密码。这是集群中
postgres管理员账号的密码。您可以手动输入密码,也可以点击生成以让 Database Migration Service 自动为您创建密码。
- 从数据库版本下拉菜单中,选择目标集群的数据库版本。
详细了解跨版本迁移支持。
- 在网络字段中:
- 选择一个网络路径,以定义在设置迁移连接性时哪些资源可用。集群配置了专用 IP 网络路径。如果您计划通过 VPC 对等互连连接到源数据库,请选择源数据库所在的 VPC。
- 如果您的网络未配置专用服务访问通道,请点击设置连接,然后按照连接配置向导中的说明操作。
- 如果从未为所选 VPC 配置过代管式服务网络,您可以选择一个 IP 范围并点击连接,也可以使用自动选择的 IP 范围并点击分配并连接。
(可选)为目标集群配置数据加密选项。
展开此部分可查看可选步骤。
点击显示高级选项,以指定是否要管理从源迁移到目标的数据的加密。默认情况下,您的数据使用由 Google Cloud管理的密钥进行加密。
如果您希望管理加密,可以使用由客户管理的加密密钥 (CMEK)。 密钥必须与 AlloyDB for PostgreSQL 集群位于同一位置。例如,位于 us-west1 中的集群只能使用 us-west1 中的密钥。
- 选中使用客户管理的加密密钥 (CMEK) 单选按钮。
- 从选择客户管理的密钥菜单中,选择您的 CMEK。
如果您没有看到密钥,请点击输入密钥资源名称以提供要使用的密钥的资源名称。例如,在密钥资源名称字段中输入
projects/my-project-name/locations/my-location/keyRings/my-keyring/cryptoKeys/my-key,然后点击保存。- 点击继续。
- 在集群 ID 字段中,输入 AlloyDB for PostgreSQL 集群的标识符,或使用自动生成的标识符。
- 配置主实例。主实例决定集群的计算容量,并且支持读写操作:
- 在实例 ID 字段中,输入主实例的 ID。
- 为主实例选择机器类型。
- 如果您打算使用 IP 许可清单连接方法,请选中启用出站公共 IP 复选框。
(可选)为主实例配置数据库标志。
展开此部分可查看可选步骤。
点击显示高级选项,为您的主实例设置数据库标志。 如需了解支持的标志,请参阅 AlloyDB for PostgreSQL 文档中的配置数据库标志。对于每个标志:
- 点击添加标志。
- 从新增数据库标志列表中选择一个标志。
- 为标志提供值。
- 点击完成。
- 点击保存并继续,然后点击创建目标并继续以确认您的选择。 Database Migration Service 会创建 AlloyDB for PostgreSQL 目标集群及其主实例。 此过程可能需要几分钟时间。
在源数据库实例和目标集群之间建立连接
从连接方法下拉菜单中,选择一种网络连接方法。此方法定义了 AlloyDB for PostgreSQL 目标集群如何连接到源数据库。目前,迁移到新集群的网络连接方法包括 IP 许可清单、VPC 对等互连、反向 SSH 隧道和通过云托管虚拟机使用的 TCP 代理。
| 如果您想使用… | 请执行以下操作 |
|---|---|
| IP 许可清单网络连接方法 | 复制目标集群主实例的两个出站公共 IP 地址,并用它们为源数据库服务器配置网络防火墙,同时修改 pg_hba.conf 文件。 |
| 反向 SSH 隧道网络连接方法 | 选择将托管隧道的 Compute Engine 虚拟机实例。
指定实例后,Google 会提供一个脚本,用于执行在源数据库和目标数据库之间设置隧道的步骤。从同时连接到源数据库和 Google Cloud的机器上,在 Google Cloud CLI 中运行脚本。 |
| VPC 对等互连网络连接方法 | 选择源数据库所在的 VPC 网络。目标集群使用专用服务访问通道连接到此网络。 |
| 通过云端托管式虚拟机的 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 迁移到新的目标集群时,您只需执行一项操作即可创建目标集群和连接配置文件。
运行以下命令(点击链接可展开):gcloud database-migration connection-profiles create alloydb此示例使用可选的
--no-async标志,以便同步执行所有操作。这意味着某些命令可能需要一段时间才能完成。您可以跳过--no-async标志,以异步方式运行命令。如果这样做,您需要使用gcloud database-migration operations describe命令来验证操作是否成功。在使用下面的命令数据之前,请先进行以下替换:
- 将 DEST_CONN_ID 替换为目标连接配置文件标识符。
- 将 REGION 替换为您要在其中保存连接配置文件并创建目标集群的区域。
- DEST_PASSWORD 替换为目标 AlloyDB for PostgreSQL 集群上
postgres用户的初始密码。 - PRIMARY_ID 替换为目标 AlloyDB for PostgreSQL 集群中主实例的 ID。
- 将 CPU_COUNT 替换为主实例的 vCPU 数量(例如
2、4、8)。 - VPC_NETWORK 替换为配置了专用服务访问通道的虚拟私有云网络的名称或完整资源 URI。
- 可选:如需为新的 AlloyDB for PostgreSQL 目标集群和主实例配置其他设置,您可以传递以下标志:
--enable-outbound-public-ip:在主实例上启用出站公共 IP(如果您使用 IP 许可清单连接,则必须启用)。--kms-key、--kms-keyring和--kms-project:使用客户管理的加密密钥 (CMEK) 加密目标集群。--database-version:指定目标集群的 PostgreSQL 主要版本(例如POSTGRES_15)。--database-flags:为目标主实例指定以英文逗号分隔的数据库标志 (KEY=VALUE) 列表。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration connection-profiles create alloydb DEST_CONN_ID \ --region=REGION \ --password=DEST_PASSWORD \ --primary-id=PRIMARY_ID \ --cpu-count=CPU_COUNT \ --network=VPC_NETWORK \ --no-async
Windows (PowerShell)
gcloud database-migration connection-profiles create alloydb DEST_CONN_ID ` --region=REGION ` --password=DEST_PASSWORD ` --primary-id=PRIMARY_ID ` --cpu-count=CPU_COUNT ` --network=VPC_NETWORK ` --no-async
Windows (cmd.exe)
gcloud database-migration connection-profiles create alloydb DEST_CONN_ID ^ --region=REGION ^ --password=DEST_PASSWORD ^ --primary-id=PRIMARY_ID ^ --cpu-count=CPU_COUNT ^ --network=VPC_NETWORK ^ --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 许可清单、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]