本页面介绍了如何对同构 PostgreSQL 迁移到 AlloyDB for PostgreSQL 执行快速启动迁移。
概览
快速启动迁移是针对同构 PostgreSQL 场景的轻量级持续迁移流程。 借助快速启动迁移,Database Migration Service 可以自动设置迁移数据库所需的一切:网络组件(网络连接、子网、专用连接配置)、连接配置文件和迁移作业。
借助快速启动迁移,您可以将数据迁移到现有的 AlloyDB for PostgreSQL 集群,也可以在配置迁移时创建新集群。 快速启动迁移最适合以下场景:
- 基本迁移,您无需精确控制数据转储并行设置。
- 将数据库从一个 Google Cloud 项目迁移到另一个项目。 配置快速启动迁移时,您可以在与来源不同的项目中创建目标 集群,并将 Database Migration Service 设置为在另一个项目的虚拟私有云 (VPC) 网络中创建网络连接和子网。
-
从 VPC 网络中具有专用 IP 地址的来源进行迁移,例如 Compute Engine 上的自行管理的数据库,或启用了专用网络的 Cloud SQL for PostgreSQL 实例。 Google Cloud
托管在外部的来源 Google Cloud 可能需要额外的网络组件 (例如 Cloud VPN 连接),以便可以在 VPC 网络中使用专用 IP 地址访问这些来源。
- 数据库连接的唯一受支持方法是 使用 Database Migration Service 专用 连接配置的 Private Service Connect 接口。您的来源数据库需要 在 VPC 网络中分配有专用 IP。快速启动迁移不支持其他同构 来源连接方法(例如公共 IP 许可名单、反向 SSH 隧道、 或 VPC 对等互连)。
如需详细了解快速启动迁移,请参阅 Database Migration Service 主要文档中的 快速启动迁移概览。
准备工作
- 验证快速启动迁移是否可以完全支持您的场景。请参阅 快速启动迁移限制。
-
登录您的 Google 账号。
如果您还没有 Google 账号,请 注册新账号。
-
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.
-
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、Compute Engine、Network Connectivity Center、 和 AlloyDB for PostgreSQL Admin 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.iam.gserviceaccount.com
这些预定义角色包含使用 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) -
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 源数据库,请执行以下操作:
- 在实例中创建专用的迁移用户账号。
- 对于 Cloud SQL for PostgreSQL 来源,请参阅 Cloud SQL 文档中的创建用户。
- 对于其他来源,请参阅数据库提供方文档或 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 替换为要迁移的数据库中的架构的名称。
- 迁移用户账号需要对您迁移的表具有所有权访问权限。如需授予此级别的访问权限,请执行以下操作之一:
- 将
SUPERUSERPostgreSQL 角色分配给迁移账号。- 对于 Cloud SQL for PostgreSQL 来源,
请分配
cloudsqlsuperuser角色。 - 对于其他来源,请分配
SUPERUSER角色 或参阅数据库提供商文档以获取等效的权限集 的权限。
- 对于 Cloud SQL for PostgreSQL 来源,
请分配
- 将迁移用户账号添加到拥有这些表的用户组。运行以下命令:
-- Grant table ownership. GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;
替换以下内容:
- 将 TABLE_OWNER_GROUP_NAME 替换为拥有要迁移的每个表的<b>用户组</b>的名称。
- 将 MIGRATION_USER 替换为迁移用户账号的名称。
- 将
- 对于没有主键的表:在变更数据捕获 (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 控制台中,前往 使用入门 页面。
- 在来源引擎 菜单中,选择 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 文档中的创建集群及其主实例 。
- 在密码 字段中,输入默认
postgresql管理员用户的密码。Database Migration Service 会以该用户的身份连接,以迁移您的数据。
现有集群
您可以将数据库迁移到已有的集群。 确保目标集群已启用 Private Service Connect,并且不使用 AlloyDB 连接器强制执行 mTLS 。请执行以下操作:
- 在目标实例类型 菜单中,选择 现有集群。
- 在现有集群 ID 菜单中,选择集群 标识符。
- 在目标实例类型 菜单中,选择
新建集群。
- 点击开始迁移 。
Database Migration Service 现在会创建迁移作业并开始迁移 过程。您可以在 AlloyDB for PostgreSQL 中监控迁移进度以及您的 目标集群的健康状况。如需了解详情,请参阅 AlloyDB for PostgreSQL 文档中的查看实例详细信息。
完成迁移
当您决定将应用切换到新的 AlloyDB for PostgreSQL 实例时,请按照以下步骤完成迁移: