本页面介绍了如何执行快速启动持续迁移,以将同构 PostgreSQL 迁移到 AlloyDB for PostgreSQL。
概览
快速启动迁移是适用于同构 PostgreSQL 场景的轻量级持续迁移流程。通过快速启动迁移,Database Migration Service 可以自动配置您所需的核心网络和迁移资源:网络连接、子网、具有 Private Service Connect 接口的专用连接配置、连接配置文件和持续迁移作业。
借助快速启动迁移,您可以将数据迁移到现有 AlloyDB for PostgreSQL 集群,也可以在配置迁移时创建新集群。快速启动迁移最适合以下情况:
- 不需要自定义数据转储并行设置的基本迁移。
- 将数据库从一个 Google Cloud 项目迁移到另一个项目。 配置快速启动迁移时,您可以在与来源不同的项目中创建目标集群,并设置 Database Migration Service 在另一个项目的虚拟私有云 (VPC) 网络中创建网络连接和子网。
-
从在 Google Cloud虚拟私有云 (VPC) 网络中具有专用 IP 地址的来源(例如 Compute Engine 上的自管理数据库或启用了专用网络的 Cloud SQL for PostgreSQL 实例)进行迁移。
托管在 Google Cloud 外部的来源可能需要额外的网络组件(例如 Cloud VPN 连接),以便可以通过 VPC 网络中的专用 IP 地址访问这些来源。
- 源数据库必须在 VPC 网络中分配有专用 IP 地址。Database Migration Service 使用 Private Service Connect 接口(网络连接)连接到源数据库。 快速启动迁移不支持公共 IP 连接。
如需详细了解快速启动迁移,请参阅 Database Migration Service 主文档中的 快速启动迁移概览。
准备工作
- 验证快速启动迁移是否能完全支持您的场景。请参阅 快速启动迁移限制。
- 在 Google Cloud 控制台的项目选择器页面上,选择或 创建 Google Cloud 项目。
- 启用 Database Migration Service、Compute Engine、Network Connectivity Center 和 AlloyDB for PostgreSQL API。
所需的角色
如需获得使用 Database Migration Service 运行到 AlloyDB for PostgreSQL 的快速入门迁移所需的权限,请让管理员在相关项目中为参与迁移的账号授予所需的 Identity and Access Management (IAM) 角色。如需详细了解如何授予角色,请参阅 IAM 文档中的 管理访问权限。
源项目中的角色和权限
在 Google Cloud 源数据库所在的项目中,向特定账号授予以下角色:
- 对于执行迁移的用户账号:
Compute Network Admin 角色 (
roles/compute.networkAdmin) - 对于目标项目的 Database Migration Service 服务账号:
Compute Network Viewer (
roles/compute.networkViewer)启用 Database Migration Service API 时,系统会创建 Database Migration Service 服务账号。与此账号关联的电子邮件地址是自动生成的,无法更改。此电子邮件地址采用以下格式:
service-DESTINATION_PROJECT_NUMBER@gcp-sa-datamigration.
这些预定义角色包含在源数据库项目中设置连接所需的权限,这是使用 Database Migration Service 进行快速入门迁移的一部分。如需查看所需的确切权限,请展开所需权限(来源)部分:
所需权限(来源)
如需使用 Database Migration Service 执行同构快速入门迁移,您需要拥有以下权限:
对于执行迁移的用户账号:
compute.networks.*compute.subnetworks.*compute.networkAttachments.*networkconnectivity.internalRanges.createnetworkconnectivity.internalRanges.getnetworkconnectivity.operations.get
对于目标项目的 Database Migration Service 服务账号:
compute.networkAttachments.get
目标项目中的角色和权限
在 Google Cloud 目标数据库所在的项目中,向执行迁移的用户账号授予以下角色:
-
Database Migration Admin (
roles/datamigration.admin) -
AlloyDB Admin (
roles/alloydb.admin)
这些预定义角色包含在目标数据库项目中设置所需迁移组件所需的权限,这些组件是使用 Database Migration Service 进行快速启动迁移的一部分。如需查看所需的确切权限,请展开所需权限(目标)部分:
所需权限(目标位置)
如需使用 Database Migration Service 执行同构快速入门迁移,您需要拥有以下权限:
datamigration.*alloydb.clusters.createalloydb.clusters.getalloydb.clusters.listalloydb.clusters.updatealloydb.clusters.deletealloydb.instances.createalloydb.instances.getalloydb.instances.listalloydb.instances.updatealloydb.instances.deletealloydb.instances.executeSqlalloydb.operations.getalloydb.users.listalloydb.users.getalloydb.users.createalloydb.users.updatealloydb.users.delete
配置源数据库
如需配置 PostgreSQL 源数据库,请执行以下操作:
- 在实例中创建专用的迁移用户账号。
- 为专用迁移用户账号分配必要的权限。
针对要迁移的每个数据库运行以下命令:
-- Grant the REPLICATION attribute ALTER ROLE MIGRATION_USER REPLICATION; -- Grant database-level permissions. -- Repeat for each database you want to migrate. GRANT CONNECT, CREATE ON DATABASE DATABASE_NAME TO MIGRATION_USER; -- Grant schema-level usage. -- Repeat for each schema in each database you want to migrate. GRANT USAGE ON SCHEMA SCHEMA_NAME TO MIGRATION_USER;
替换以下内容:
- 将 MIGRATION_USER 替换为迁移用户账号的名称。
- 将 DATABASE_NAME 替换为您要迁移的数据库的名称。
- 将 SCHEMA_NAME 替换为要迁移的数据库中的架构名称。
- 迁移用户账号需要对您迁移的表具有所有权访问权限。如需授予此级别的访问权限,请执行以下操作之一:
- 仅适用于 Cloud SQL for PostgreSQL 以外的来源:将
SUPERUSERPostgreSQL 角色分配给迁移账号。 - 对于所有来源:将迁移用户账号添加到拥有这些表的用户组。
运行以下命令:
-- Grant table ownership. GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;
替换以下内容:
- TABLE_OWNER_GROUP_NAME 替换为拥有您要迁移的每个表的用户群组的名称。
- 将 MIGRATION_USER 替换为迁移用户账号的名称。
- 仅适用于 Cloud SQL for PostgreSQL 以外的来源:将
- 对于没有主键的表:在变更数据捕获 (CDC) 阶段,Database Migration Service 不会为没有主键的表复制
UPDATE或DELETE操作。如果您想在复制中包含此类操作,请使用REPLICA IDENTITY修改没有主键的表:ALTER TABLE TABLE_NAME REPLICA IDENTITY FULL; ALTER TABLE TABLE_NAME REPLICA IDENTITY USING INDEX INDEX_NAME;
替换以下内容:
- TABLE_NAME 是没有主键的表的名称。
- INDEX_NAME 是唯一索引,可以跟踪没有主键的表中的行。
- 使用数据库标志配置复制设置。
自管式来源
保存对数据库标志的更改需要完全重启数据库。 以下示例使用 SQL 查询来更改标志值。 如果您无法直接运行 SQL 查询,请参阅提供商文档,了解有关更改这些标志的步骤。
- 将
wal_level参数设置为logical。运行以下命令:ALTER SYSTEM SET wal_level = 'logical';
- 将
wal_sender_timeout参数设置为0。 此值可停用用于终止非活跃复制连接的超时机制。运行以下命令:ALTER SYSTEM SET wal_sender_timeout = 0;
- 使用
max_replication_slots参数配置复制槽数上限。此参数必须至少设置为每个迁移作业要迁移的数据库数量,并预留一部分进行表同步。例如,如果您要迁移 5 个数据库,并且为源实例创建了 2 个迁移作业,那么除了您已经使用的复制槽数量之外,复制槽的数量必须至少为
5 * 2 = 10。如需设置此参数,请运行以下命令:
其中 NUMBER_OF_SLOTS 表示复制槽数上限。ALTER SYSTEM SET max_replication_slots = NUMBER_OF_SLOTS;
- 将
max_wal_senders参数配置为至少与max_replication_slots相同的值,再加上实例中已使用的发送方数量。例如,如果
max_replication_slots参数设置为10,并且您已经使用 2 个发送器,则同时运行的 WAL 发送器进程的数量将为10 + 2 = 12。如需设置此参数,请运行以下命令:
其中 NUMBER_OF_SENDERS 表示同时运行的 WAL 发送器进程数。ALTER SYSTEM SET max_wal_senders = NUMBER_OF_SENDERS;
- 将
max_worker_processes设置为至少是您要迁移的数据库数量加上实例中已使用的max_worker_processes数量。 如需设置此参数,请运行以下命令: 其中 NUMBER_OF_PROCESSES 表示将迁移的数据库数量。ALTER SYSTEM SET max_worker_processes = NUMBER_OF_PROCESSES;
Cloud SQL for PostgreSQL 来源
对于 Cloud SQL 源,您可以在 Google Cloud 控制台中配置数据库标志。 修改数据库标志后,您必须重启实例,设置才能生效。如需详细了解如何在 Cloud SQL 中设置数据库标志,请参阅 Cloud SQL 文档中的 配置数据库标志。
- 将
cloudsql.logical_decoding标志设置为on。 启用此标志需要重启实例,设置才能生效。 - 将
wal_sender_timeout参数设置为0。 此值可停用用于终止非活跃复制连接的超时机制。 - 使用
max_replication_slots参数配置复制槽数上限。此参数必须至少设置为您在每个迁移作业中迁移的数据库数量,并预留一部分进行表同步。例如,如果您要迁移 5 个数据库,并且为源实例创建了 2 个迁移作业,那么除了您已经使用的复制槽数量之外,复制槽的数量必须至少为
5 * 2 = 10。 - 将
max_wal_senders参数配置为至少与max_replication_slots相同的值,再加上实例中已使用的发送方数量。例如,如果
max_replication_slots参数设置为10,并且您已经使用 2 个发送器,则同时运行的 WAL 发送器进程的数量将为10 + 2 = 12。 - 将
max_worker_processes参数设置为至少是您要迁移的数据库数量加上实例中已使用的max_worker_processes数量。
- 将
创建并运行快速启动迁移
如需创建并运行快速启动迁移,您可以使用 Google Cloud 控制台或 gcloud CLI。
控制台
- 在 Google Cloud 控制台中,前往开始使用页面。
- 在源引擎菜单中,选择 PostgreSQL。
- 在目标引擎菜单中,选择 AlloyDB for PostgreSQL。
系统会显示全新推出 PostgreSQL 快速迁移功能部分。
- 在全新推出 PostgreSQL 快速迁移功能部分,点击开始迁移。
系统会打开迁移到 AlloyDB for PostgreSQL 页面。
- 在配置迁移部分中,执行以下操作:
- 从目标区域菜单中,选择目标 AlloyDB for PostgreSQL 集群的区域。
- 在迁移前缀框中,输入一个易于理解的字符串,该字符串将添加到为快速启动迁移创建的所有迁移实体的名称中:连接配置文件、专用连接配置、网络连接及其子网,以及迁移作业。
- 从配置类型菜单中,选择以下选项之一:
- 现有连接配置:如果您已有网络连接和使用 Private Service Connect 接口方法的专用连接配置,请选择此选项。如果您之前使用过快速启动迁移,并且想要重复使用相同的网络资源,则最好使用此选项。
- 新连接配置:选择此选项可在源数据库 VPC 网络中创建新的网络连接和网络连接子网。 专用连接配置将在目标集群所在的项目中创建。
- 点击继续。
- 在连接来源部分中,执行以下操作:
- 输入源数据库的主机名或专用 IP 地址。必须能够从源 VPC 网络访问源数据库地址。
- 输入用于访问主机的端口。默认 PostgreSQL 端口为
5432。 - 输入源数据库中专用迁移账号的用户名和密码。
- 从加密类型菜单中,选择以下选项之一:
- 无:如果您的源数据库不需要 SSL/TLS 加密连接。
- 必需:如果您的源数据库需要 SSL/TLS 加密连接。此选项不需要任何证书验证。
- 在要迁移的数据库菜单中,点击自定义。 使用带有嵌入式数据库发现功能的侧边栏,仅选择要迁移到 AlloyDB for PostgreSQL 的数据库。
- 点击继续。
- 在配置目标部分中,您可以创建新的目标集群,也可以选择现有目标集群:
新集群
如果您想创建新的目标集群,请执行以下操作:
- 从目标实例类型菜单中,选择新集群。
Database Migration Service 会为新集群使用默认的 AlloyDB for PostgreSQL 配置。点击自定义以调整集群功能,例如机器类型、可用区可用性或数据保护设置。如需详细了解集群配置,请参阅 AlloyDB for PostgreSQL 文档中的 创建集群及其主实例。
- 在密码字段中,输入默认
postgres管理员用户的密码。Database Migration Service 会以此用户身份进行连接,以迁移您的数据。
现有集群
您可以将数据库迁移到已存在的集群。 确保目标集群已启用 Private Service Connect,处于
RUNNABLE状态,并且不强制要求使用 AlloyDB 连接器进行 mTLS。请执行以下操作:- 从目标实例类型菜单中,选择现有集群。
- 从现有集群 ID 菜单中,选择集群标识符。
- 从目标实例类型菜单中,选择新集群。
- 点击开始迁移。
Database Migration Service 会创建持续迁移作业并开始复制数据。您可以在 AlloyDB for PostgreSQL 中监控迁移进度和目标集群运行状况。如需了解详情,请参阅 AlloyDB for PostgreSQL 文档中的 查看集群和实例详细信息。
gcloud
如需使用 gcloud CLI 创建并运行快速入门迁移,请执行以下操作:
-
配置网络连接。
决定是要创建新的网络连接,还是重复使用现有网络连接。 您需要在可访问源数据库专用 IP 的网络中建立网络连接。- 如果您想创建新的网络连接,请运行以下命令(点击可展开完整详情):
gcloud compute network-attachments create在使用下面的命令数据之前,请先进行以下替换:
- 将 NETWORK_ATTACHMENT 替换为要创建的网络连接的名称。
- 将 REGION 替换为网络连接所在的区域。
- 将 DEST_PROJECT_ID 替换为目标项目的项目 ID。
- 将 SOURCE_PROJECT_ID 替换为源网络所在的项目 ID。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud compute network-attachments create NETWORK_ATTACHMENT \ --region=REGION \ --connection-preference=ACCEPT_MANUAL \ --producer-accept-list=DEST_PROJECT_ID \ --subnets=default \ --project=SOURCE_PROJECT_ID
Windows (PowerShell)
gcloud compute network-attachments create NETWORK_ATTACHMENT ` --region=REGION ` --connection-preference=ACCEPT_MANUAL ` --producer-accept-list=DEST_PROJECT_ID ` --subnets=default ` --project=SOURCE_PROJECT_ID
Windows (cmd.exe)
gcloud compute network-attachments create NETWORK_ATTACHMENT ^ --region=REGION ^ --connection-preference=ACCEPT_MANUAL ^ --producer-accept-list=DEST_PROJECT_ID ^ --subnets=default ^ --project=SOURCE_PROJECT_ID
- 如果您想创建新的网络连接,请运行以下命令(点击可展开完整详情):
-
允许 Database Migration Service 租户项目访问您的网络连接。
您的网络连接必须允许来自 Database Migration Service 租户项目的连接。执行以下步骤:- 通过执行试运行专用连接创建来检索 Database Migration Service 租户项目 ID(点击可展开):
gcloud database-migration private-connections create --validate-only在使用下面的命令数据之前,请先进行以下替换:
- 将 PRIVATE_CONN 替换为专用连接资源的名称。
- 将 REGION 替换为专用连接的区域。
- 将 NETWORK_ATTACHMENT_URI 替换为网络连接的 URI。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration private-connections create PRIVATE_CONN \ --region=REGION \ --network-attachment=NETWORK_ATTACHMENT_URI \ --display-name=PRIVATE_CONN \ --format="value(metadata.metadata.tenant_project_id)" \ --validate-only
Windows (PowerShell)
gcloud database-migration private-connections create PRIVATE_CONN ` --region=REGION ` --network-attachment=NETWORK_ATTACHMENT_URI ` --display-name=PRIVATE_CONN ` --format="value(metadata.metadata.tenant_project_id)" ` --validate-only
Windows (cmd.exe)
gcloud database-migration private-connections create PRIVATE_CONN ^ --region=REGION ^ --network-attachment=NETWORK_ATTACHMENT_URI ^ --display-name=PRIVATE_CONN ^ --format="value(metadata.metadata.tenant_project_id)" ^ --validate-only
保存返回的租户项目 ID,以便在后续命令中使用。
- 允许 Database Migration Service 租户项目和目标项目连接到网络连接(点击可展开):
gcloud compute network-attachments update在使用下面的命令数据之前,请先进行以下替换:
- 将 NETWORK_ATTACHMENT 替换为网络连接的名称。
- 将 REGION 替换为区域。
- 将 DEST_PROJECT_ID 替换为目标项目的项目 ID。
- 将 DMS_TENANT_ID 替换为检索到的 Database Migration Service 租户项目 ID。
- 将 SOURCE_PROJECT_ID 替换为源网络所在的项目 ID。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud compute network-attachments update NETWORK_ATTACHMENT \ --region=REGION \ --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID \ --project=SOURCE_PROJECT_ID
Windows (PowerShell)
gcloud compute network-attachments update NETWORK_ATTACHMENT ` --region=REGION ` --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID ` --project=SOURCE_PROJECT_ID
Windows (cmd.exe)
gcloud compute network-attachments update NETWORK_ATTACHMENT ^ --region=REGION ^ --producer-accept-list=DEST_PROJECT_ID,DMS_TENANT_ID ^ --project=SOURCE_PROJECT_ID
- 通过执行试运行专用连接创建来检索 Database Migration Service 租户项目 ID(点击可展开):
-
创建专用连接。
创建专用连接资源,以允许 Database Migration Service 连接到您的源网络(点击可展开):gcloud database-migration private-connections create在使用下面的命令数据之前,请先进行以下替换:
- 将 PRIVATE_CONN 替换为专用连接资源的名称。
- 将 REGION 替换为专用连接的区域。
- 将 NETWORK_ATTACHMENT_URI 替换为网络连接的 URI。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration private-connections create PRIVATE_CONN \ --region=REGION \ --network-attachment=NETWORK_ATTACHMENT_URI \ --display-name=PRIVATE_CONN
Windows (PowerShell)
gcloud database-migration private-connections create PRIVATE_CONN ` --region=REGION ` --network-attachment=NETWORK_ATTACHMENT_URI ` --display-name=PRIVATE_CONN
Windows (cmd.exe)
gcloud database-migration private-connections create PRIVATE_CONN ^ --region=REGION ^ --network-attachment=NETWORK_ATTACHMENT_URI ^ --display-name=PRIVATE_CONN
-
创建来源连接配置文件。
运行以下命令(点击可展开):gcloud database-migration connection-profiles create postgresql此示例使用可选的
--no-async标志,以便同步执行所有操作。这意味着某些命令可能需要一段时间才能完成。您可以跳过--no-async标志,以异步方式运行命令。如果这样做,您需要使用gcloud database-migration operations describe命令来验证操作是否成功。在使用下面的命令数据之前,请先进行以下替换:
- 将 SOURCE_CONN_ID 替换为您的来源连接配置文件标识符。
- 将 REGION 替换为您要在其中保存连接配置文件的区域。
- 将 SOURCE_PRIVATE_IP 替换为源数据库的专用 IP 地址。
- 将 SOURCE_PORT 替换为源数据库的端口(默认值为 5432)。
- 将 SOURCE_USER 替换为源数据库中迁移用户的用户名。
- 将 SOURCE_PASSWORD 替换为源数据库上迁移用户的密码。
- 将 PRIVATE_CONN 替换为专用连接资源的名称。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration connection-profiles create postgresql \ SOURCE_CONN_ID \ --region=REGION \ --role=SOURCE \ --host=SOURCE_PRIVATE_IP \ --port=SOURCE_PORT \ --username=SOURCE_USER \ --password=SOURCE_PASSWORD \ --private-connection=PRIVATE_CONN \ --no-async
Windows (PowerShell)
gcloud database-migration connection-profiles create postgresql ` SOURCE_CONN_ID ` --region=REGION ` --role=SOURCE ` --host=SOURCE_PRIVATE_IP ` --port=SOURCE_PORT ` --username=SOURCE_USER ` --password=SOURCE_PASSWORD ` --private-connection=PRIVATE_CONN ` --no-async
Windows (cmd.exe)
gcloud database-migration connection-profiles create postgresql ^ SOURCE_CONN_ID ^ --region=REGION ^ --role=SOURCE ^ --host=SOURCE_PRIVATE_IP ^ --port=SOURCE_PORT ^ --username=SOURCE_USER ^ --password=SOURCE_PASSWORD ^ --private-connection=PRIVATE_CONN ^ --no-async
-
创建目标连接配置文件。
根据您是要迁移到新的还是现有的 AlloyDB for PostgreSQL 集群,选择相应的标签页:新集群
如需为快速启动迁移使用新的目标集群,请先使用 AlloyDB for PostgreSQL Google Cloud CLI 创建集群及其主实例,然后创建目标连接配置文件。请按以下步骤操作:
-
使用 AlloyDB for PostgreSQL Google Cloud CLI 创建集群及其主实例。
请务必使用
--enable-private-service-connect标志为目标集群启用 Private Service Connect。快速启动迁移仅支持启用了 Private Service Connect 的目标。 - 为新集群创建目标连接配置文件。
展开以下部分,查看完整的命令详情。
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 [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]
现有集群
如需迁移到现有目标集群,请创建指向预先创建的集群的连接配置文件。运行以下命令(点击可展开):
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 [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]
-
使用 AlloyDB for PostgreSQL Google Cloud CLI 创建集群及其主实例。
请务必使用
-
创建持续迁移作业。
运行以下命令以创建持续迁移作业(点击可展开):gcloud database-migration migration-jobs create此示例使用可选的
--no-async标志,以便同步执行所有操作。这意味着某些命令可能需要一段时间才能完成。您可以跳过--no-async标志,以异步方式运行命令。如果这样做,您需要使用gcloud database-migration operations describe命令来验证操作是否成功。在使用下面的命令数据之前,请先进行以下替换:
- 将 MIGRATION_JOB_ID 替换为您的迁移作业标识符。
- 将 REGION 替换为您要保存迁移作业的区域。
- 将 SOURCE_CONN_ID 替换为来源连接配置文件标识符。
- DEST_CONN_ID 替换为目标连接配置文件标识符。
- 将 DATABASES_LIST 替换为您要迁移的数据库的英文逗号分隔列表。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration migration-jobs create \ MIGRATION_JOB_ID \ --region=REGION \ --type=CONTINUOUS \ --source=SOURCE_CONN_ID \ --destination=DEST_CONN_ID \ --use-postgres-native \ --postgres-max-additional-subscriptions=10 \ --databases-filter=DATABASES_LIST \ --no-async
Windows (PowerShell)
gcloud database-migration migration-jobs create ` MIGRATION_JOB_ID ` --region=REGION ` --type=CONTINUOUS ` --source=SOURCE_CONN_ID ` --destination=DEST_CONN_ID ` --use-postgres-native ` --postgres-max-additional-subscriptions=10 ` --databases-filter=DATABASES_LIST ` --no-async
Windows (cmd.exe)
gcloud database-migration migration-jobs create ^ MIGRATION_JOB_ID ^ --region=REGION ^ --type=CONTINUOUS ^ --source=SOURCE_CONN_ID ^ --destination=DEST_CONN_ID ^ --use-postgres-native ^ --postgres-max-additional-subscriptions=10 ^ --databases-filter=DATABASES_LIST ^ --no-async
您应该会收到类似如下所示的响应:
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]
-
启动迁移作业。
如需启动持续迁移作业,请运行以下命令(点击可展开):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 替换为您的迁移作业标识符。
完成迁移
当您决定将应用流量切换到新的 AlloyDB for PostgreSQL 集群时,请按照以下步骤完成迁移:
- 停止对源数据库执行的所有写入操作。您可以将源数据库切换到只读模式,以便在割接期间保留操作查询功能。
- 提升迁移作业。对于快速启动迁移,目标集群在迁移过程中仍可写入。提升迁移作业只会结束复制,不会对目标集群产生任何影响。
- 可选: 验证迁移数据的完整性和一致性。