本页面介绍了如何执行同构 PostgreSQL 迁移到 Cloud SQL for PostgreSQL 的快速启动迁移。
概览
快速启动迁移是一种轻量级的持续迁移流程,适用于同构 PostgreSQL 场景。借助快速启动迁移,Database Migration Service 可以自动设置迁移数据库所需的一切:网络组件(网络附加、子网、专用连接配置)、连接配置文件和迁移作业。
通过快速启动迁移,您可以将数据迁移到现有的 Cloud SQL 实例,也可以在配置迁移时创建一个新实例。 快速启动迁移最适合以下情况:
- 基本迁移,您无需精确控制数据转储并行设置。
- 将数据库从一个 Google Cloud 项目迁移到另一个项目。 配置快速入门迁移时,您可以在与源项目不同的项目中创建目标实例,并设置 Database Migration Service 以在另一个项目的虚拟私有云 (VPC) 网络中创建网络连接和子网。
-
从 Google Cloud虚拟私有云 (VPC) 网络中具有专用 IP 地址的来源迁移,例如 Compute Engine 上的自管理数据库,或已启用专用网络的 Cloud SQL for PostgreSQL 实例。
托管在 Google Cloud 之外的来源可能需要额外的网络组件(例如 Cloud VPN 连接),以便可以通过 VPC 网络中的专用 IP 地址访问这些来源。
- 唯一受支持的数据库连接方法是使用 Private Service Connect 接口和 Database Migration Service 专用连接配置。您的源数据库需要在 VPC 网络中分配有专用 IP。快速启动迁移不支持其他同构源连接方法(例如公共 IP 许可名单、反向 SSH 隧道或 VPC 对等互连)。
如需详细了解快速启动迁移,请参阅 Database Migration Service 主要文档中的 快速启动迁移概览。
准备工作
- 验证快速启动迁移是否能完全支持您的方案。请参阅 快速启动迁移的限制。
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
- 启用 Database Migration Service API、Compute Engine API、Network Connectivity Center API 和 Cloud SQL Admin API。
所需的角色
如需获得使用 Database Migration Service 将数据快速迁移到 Cloud SQL 所需的权限,请让管理员在相关项目中为参与迁移的账号授予所需的 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.*
对于目标项目的 Database Migration Service 服务账号:compute.networkAttachments.get。
目标项目中的角色和权限
向在 Google Cloud 项目(即目标数据库所在的项目)中执行迁移的用户账号授予以下角色:
-
Database Migration Admin (
roles/datamigration.admin) -
Cloud SQL Admin (
roles/cloudsql.admin)
这些预定义角色包含在目标数据库项目中设置所需迁移组件所需的权限,以便使用 Database Migration Service 进行快速启动迁移。如需查看所需的确切权限,请展开所需权限(目标位置)部分:
所需权限(目标)
如需使用 Database Migration Service 执行同构快速启动迁移,您需要拥有以下权限:
datamigration.*cloudsql.instances.createcloudsql.instances.deletecloudsql.instances.getcloudsql.instances.listcloudsql.instances.updatecloudsql.instances.connectcloudsql.instances.executeSqlcloudsql.instances.exportcloudsql.instances.importcloudsql.instances.logincloudsql.operations.getcloudsql.users.getcloudsql.users.listcloudsql.users.createcloudsql.users.updatecloudsql.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 控制台创建并运行快速入门迁移,请执行以下操作:
- 在 Google Cloud 控制台中,前往使用入门页面。
- 在源引擎菜单中,选择 PostgreSQL。
- 在目标引擎菜单中,选择 Cloud SQL for PostgreSQL。
系统会显示全新推出 PostgreSQL 快速迁移功能部分。
- 在全新推出 PostgreSQL 快速迁移功能部分中,点击开始迁移。
系统会打开迁移到 Cloud SQL for PostgreSQL 页面。
- 在配置迁移部分中,执行以下操作:
- 从目标区域菜单中,选择目标 Cloud SQL 实例的区域。
- 在迁移前缀框中,输入一个便于理解的字符串,该字符串将添加到为快速启动迁移创建的所有迁移实体的名称中:连接配置文件、专用连接配置、网络连接及其子网,以及迁移作业。
- 从配置类型菜单中,选择以下选项之一:
- 现有连接配置:如果您已拥有网络连接和使用 Private Service Connect 接口方法的专用连接配置,请选择此选项。 如果您之前使用过快速启动迁移,并且想重复使用相同的网络资源,最好使用此选项。
- 新的连接配置:选择此选项可在源数据库 VPC 网络中创建新的网络连接和网络连接子网。 专用连接配置将在目标实例所在的同一项目中创建。
- 点击继续。
- 在连接来源部分,执行以下操作:
- 输入源数据库的主机名或私有 IP 地址。源数据库地址必须可从源 VPC 网络访问。
- 输入用于访问主机的端口。默认的 PostgreSQL 端口为
5432。 - 输入源数据库中专用迁移账号的用户名和密码。
- 从加密类型菜单中,选择以下选项之一:
- 无:如果源数据库不需要 SSL/TLS 加密连接。
- 必需:如果源数据库要求使用 SSL/TLS 加密的连接。此选项不需要进行任何证书验证。
- 在要迁移的数据库菜单中,点击自定义。 使用侧边栏仅选择要迁移到 Cloud SQL 的数据库。
- 点击继续。
- 在配置目标位置部分中,您可以创建新的目标位置实例,也可以选择现有实例。
新实例
如果您想创建新的目的地实例,请执行以下操作:
- 在目标实例类型菜单中,选择新实例。
Database Migration Service 会为新实例使用默认 Cloud SQL 配置。点击自定义以调整实例功能,例如机器类型、可用区可用性或数据保护设置。 如需详细了解实例配置,请参阅 Cloud SQL 文档中的 创建实例。
- 在密码字段中,输入默认
postgresql管理员用户的密码。Database Migration Service 会以该用户身份连接,以便迁移您的数据。
现有实例
您可以将数据库迁移到已存在的实例。 确保目标实例已启用 Private Service Connect,并且不强制执行 mTLS 连接。 执行以下操作:
- 在目标实例类型菜单中,选择现有实例。
- 从现有实例 ID 菜单中,选择实例标识符。
- 在目标实例类型菜单中,选择新实例。
- 点击开始迁移。
Database Migration Service 现在会创建迁移作业并开始迁移流程。您可以在 Database Migration Service 迁移作业详情中监控迁移进度。如需了解详情,请参阅 管理迁移作业。
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
-
创建目标连接配置文件。
根据您要迁移到新的 Cloud SQL 实例还是现有的 Cloud SQL 实例,选择相应的标签页:新实例
如需使用新的目标实例进行快速入门迁移,请先使用 Cloud SQL Google Cloud CLI 创建该实例,然后创建目标连接配置文件。请按以下步骤操作:
-
使用 Cloud SQL 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_INSTANCE 替换为您预先创建的目标 Cloud SQL 实例的 ID。
- 将 DEST_USER 替换为目标数据库上迁移用户的用户名。
- 将 DEST_PASSWORD 替换为目标数据库中迁移用户的密码。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \ --region=REGION \ --cloudsql-instance=DEST_INSTANCE \ --username=DEST_USER \ --password=DEST_PASSWORD \ --role=DESTINATION \ --no-async
Windows (PowerShell)
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ` --region=REGION ` --cloudsql-instance=DEST_INSTANCE ` --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 ^ --cloudsql-instance=DEST_INSTANCE ^ --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_INSTANCE 替换为您预先创建的目标 Cloud SQL 实例的 ID。
- 将 DEST_USER 替换为目标数据库上迁移用户的用户名。
- 将 DEST_PASSWORD 替换为目标数据库中迁移用户的密码。
执行以下命令:
Linux、macOS 或 Cloud Shell
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID \ --region=REGION \ --cloudsql-instance=DEST_INSTANCE \ --username=DEST_USER \ --password=DEST_PASSWORD \ --role=DESTINATION \ --no-async
Windows (PowerShell)
gcloud database-migration connection-profiles create postgresql DEST_CONN_ID ` --region=REGION ` --cloudsql-instance=DEST_INSTANCE ` --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 ^ --cloudsql-instance=DEST_INSTANCE ^ --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]
-
使用 Cloud SQL 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此示例使用了可选的
--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 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
结果
该操作以异步方式执行。 因此,此命令会返回一个表示长时间运行的操作的 Operation 实体:
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 替换为您的迁移作业标识符。
完成迁移
当您决定将应用切换到新的 Cloud SQL 实例时,请按照以下步骤完成迁移:
- 停止对源数据库的所有写入操作。您可以将它们切换到只读模式,以保留操作功能。
- 提升迁移作业。对于快速启动迁移,目标实例在迁移过程中保持可写入状态。 提升迁移作业只会结束复制,不会对目标实例产生任何影响。
- 可选: 验证迁移数据的完整性。