本页面介绍了如何执行同构 PostgreSQL 到 AlloyDB for PostgreSQL 的快速入门迁移。
概览
快速启动迁移是一种轻量级的持续迁移流程,适用于同构 PostgreSQL 场景。借助快速启动迁移,Database Migration Service 可以自动设置迁移数据库所需的一切:网络组件(网络附加、子网、专用连接配置)、连接配置文件和迁移作业。
借助快速入门迁移,您可以将数据迁移到现有的 AlloyDB for PostgreSQL 集群,也可以在配置迁移时创建一个新集群。快速启动迁移最适合以下情况:
- 基本迁移,您无需精确控制数据转储并行设置。
- 将数据库从一个 Google Cloud 项目迁移到另一个项目。 配置快速入门迁移时,您可以在与源项目不同的项目中创建目标集群,并将 Database Migration Service 设置为在另一个项目的 Virtual Private Cloud (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、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.
这些预定义角色包含在通过 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 数据库,请执行以下操作:
- 在实例中创建专用的迁移用户账号。
- 向专用迁移用户账号分配必要的权限。
针对要迁移的每个数据库运行以下命令:
-- 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。如需设置此参数,请运行以下命令:
ALTER SYSTEM SET max_replication_slots
- 将