使用 Database Migration Service 进行快速启动迁移

本页面介绍了如何对同构 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 文档 中的快速启动迁移。

准备工作

  1. 验证快速启动迁移是否可以完全支持您的场景。请参阅 快速启动迁移限制 在 Database Migration Service 文档中。
  2. 登录您的 Google 账号。

    如果您还没有 Google 账号,请 注册新账号

  3. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  4. Verify that billing is enabled for your Google Cloud project.

  5. 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 the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. 启用 Database Migration Service、Compute Engine、Network Connectivity Center、 和 AlloyDB for PostgreSQL Admin API。

    启用 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_NUMBERservice-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 Service 执行快速启动迁移时,在目标 数据库项目上设置所需迁移组件所需的权限。如需查看所需的确切权限,请展开所需权限(目标) 部分:

所需权限(目标)

使用 Database Migration Service 执行同构快速启动 迁移需要以下权限:

  • datamigration.*
  • alloydb.clusters.create
  • alloydb.clusters.get
  • alloydb.clusters.list
  • alloydb.clusters.update
  • alloydb.clusters.delete
  • alloydb.instances.create
  • alloydb.instances.get
  • alloydb.instances.list
  • alloydb.instances.update
  • alloydb.instances.delete
  • alloydb.instances.executeSql
  • alloydb.operations.get
  • alloydb.users.list
  • alloydb.users.get
  • alloydb.users.create
  • alloydb.users.update
  • alloydb.users.delete

配置源数据库

如需配置 PostgreSQL 源数据库,请执行以下操作:

  1. 在实例中创建专用的迁移用户账号。
  2. 为专用迁移用户账号分配必要的权限。 针对要迁移的每个数据库运行以下命令:
    -- 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 替换为要迁移的数据库中的架构的名称。
  3. 迁移用户账号需要对您迁移的表具有所有权访问权限。如需授予此级别的访问权限,请执行以下操作之一:
    • 仅适用于 Cloud SQL for PostgreSQL 以外的来源:将 SUPERUSER PostgreSQL 角色分配给迁移账号。
    • 适用于所有来源:将迁移用户账号添加到拥有这些表的**用户组**。运行以下命令:
      -- Grant table ownership.
      GRANT TABLE_OWNER_GROUP_NAME TO MIGRATION_USER;

      替换以下内容:

      • TABLE_OWNER_GROUP_NAME 替换为拥有您要迁移的每个表的用户组的名称。
      • MIGRATION_USER 替换为迁移用户账号的名称。
  4. 对于没有主键的表:在变更数据捕获 (CDC) 阶段,Database Migration Service 不会复制没有主键的表的 UPDATEDELETE 操作。 如果您想在复制中包含此类操作,请使用REPLICA IDENTITY修改没有主键的表:
    ALTER TABLE TABLE_NAME REPLICA IDENTITY FULL;
    ALTER TABLE TABLE_NAME REPLICA IDENTITY USING INDEX INDEX_NAME;

    替换以下内容:

    • TABLE_NAME 是没有主键的表的名称。
    • INDEX_NAME 是可以跟踪没有主键的表中的行的唯一索引。
  5. 使用数据库标志配置复制设置。

    自行管理的来源

    保存对数据库标志的更改需要完全重启数据库。 以下示例使用 SQL 查询来更改标志值。 如果您无法直接运行 SQL 查询,请参阅提供方文档,了解有关更改这些标志的步骤。

    1. wal_level 参数设置为 logical。运行以下命令:
      ALTER SYSTEM SET wal_level = 'logical';
    2. wal_sender_timeout 参数设置为 0。 此值可停用用于终止非活跃 复制连接的超时机制。运行以下命令:
      ALTER SYSTEM SET wal_sender_timeout = 0;
          
    3. 使用 max_replication_slots 参数配置复制槽的数量上限。此参数必须设置为至少等于每个迁移作业中要迁移的数据库数量,再加上一些用于表同步的预留数量。

      例如,如果您要迁移 5 个数据库,并且为来源实例创建了 2 个迁移作业,那么复制槽的数量必须至少为 5 * 2 = 10,再加上您已使用的复制槽数量。

      如需设置此参数,请运行以下命令:

      ALTER SYSTEM SET max_replication_slots = NUMBER_OF_SLOTS;
          
      其中 NUMBER_OF_SLOTS 表示复制槽的数量上限。
    4. max_wal_senders 参数配置为至少等于 max_replication_slots 的值, 再加上实例中已使用的发送方数量。

      例如,如果 max_replication_slots 参数设置为 10,并且您已使用 2 个发送方,那么同时运行的 WAL 发送方进程的数量将为 10 + 2 = 12

      如需设置此参数,请运行以下命令:

      ALTER SYSTEM SET max_wal_senders = NUMBER_OF_SENDERS;
          
      其中 NUMBER_OF_SENDERS 表示同时运行的 WAL 发送方进程的数量。
    5. max_worker_processes 设置为至少等于要迁移的数据库数量,再加上实例中已使用的 max_worker_processes 数量。如需设置此参数,请运行以下命令:
      ALTER SYSTEM SET max_worker_processes = NUMBER_OF_PROCESSES;
          
      其中 NUMBER_OF_PROCESSES 表示将要迁移的数据库的数量。

    Cloud SQL for PostgreSQL 来源

    对于 Cloud SQL 来源,您可以在 Google Cloud 控制台中配置数据库标志。 修改数据库标志后,您必须重启实例,设置才会生效。如需详细了解如何在 Cloud SQL 中设置数据库标志,请参阅 Cloud SQL 文档中的配置数据库标志

    1. cloudsql.logical_decoding 标志设置为 on
    2. wal_sender_timeout 参数设置为 0。 此值可停用用于终止非活跃 复制连接的超时机制。
    3. 使用 max_replication_slots 参数配置复制槽的数量上限。此参数必须设置为至少等于每个迁移作业中要迁移的数据库数量,再加上一些用于表同步的预留数量。

      例如,如果您要迁移 5 个数据库,并且为来源实例创建了 2 个迁移作业,那么复制槽的数量必须至少为 5 * 2 = 10,再加上您已使用的复制槽数量。

    4. max_wal_senders 参数配置为至少等于 max_replication_slots 的值,再加上实例中已使用的发送方数量。

      例如,如果 max_replication_slots 参数设置为 10,并且您已使用 2 个发送方,那么同时运行的 WAL 发送方进程的数量将为 10 + 2 = 12

    5. max_worker_processes 设置为至少等于要迁移的数据库数量,再加上实例中已使用的 max_worker_processes 数量。

创建并运行快速启动迁移

使用快速启动迁移时,您可以创建新的 AlloyDB for PostgreSQL 集群并将数据库迁移到该集群,也可以将数据库迁移到现有集群。

针对新集群的快速启动迁移

如需创建新的 AlloyDB for PostgreSQL 集群并立即将数据库迁移到该集群,请按照以下步骤操作:

  1. 前往集群 页面。

    前往“集群”页面

  2. 依次点击创建集群 > 从现有数据库

    系统会打开 Database Migration Service 快速启动迁移表单。

  3. 配置迁移 部分中,执行以下操作:
    1. 目标区域 菜单中,选择目标 AlloyDB for PostgreSQL 集群的区域。
    2. 迁移前缀 框中,输入一个便于记忆的字符串,该字符串将添加到为快速启动迁移创建的所有迁移实体的名称中:连接配置文件、专用连接配置、网络连接及其子网,以及迁移作业。
    3. 配置类型 菜单中,选择以下选项之一:
      1. 现有连接配置:如果您已具有网络连接和使用 Private Service Connect 接口方法的专用连接配置,请选择此选项。如果您之前使用过 快速启动迁移,并且想要重复使用相同的网络资源,最好使用此选项。
      2. 新连接配置:选择此选项可在来源数据库 VPC 网络中创建新的网络连接和网络连接子网。专用连接配置将在与目标集群相同的项目中创建。
    4. 点击继续
  4. 连接来源 部分中,执行以下操作:
    1. 输入来源数据库的主机名 或专用 IP 地址 。来源数据库地址必须可从来源 VPC 网络访问。
    2. 输入用于访问主机的端口 。默认 PostgreSQL 端口为 5432
    3. 输入来源数据库中专用迁移账号的用户名和密码。 在来源数据库中。
    4. 加密类型 菜单中,选择以下选项之一:
      • :如果来源数据库不需要 SSL/TLS 加密连接。
      • 必需:如果来源数据库需要 SSL/TLS 加密连接。此选项不需要任何证书验证。
    5. 要迁移的数据库 菜单中,点击自定义 。 使用侧边栏仅选择要迁移 到 AlloyDB for PostgreSQL 的数据库。
    6. 点击继续
  5. 配置目标 部分中,执行以下操作:
    1. 目标实例类型 菜单中,选择 新集群

      Database Migration Service 会对新集群使用默认 AlloyDB for PostgreSQL 配置 。点击自定义 可调整集群功能, 例如机器类型、可用区可用性或数据保护设置。 如需详细了解集群配置,请参阅 创建集群及其主实例

    2. 密码 字段中,输入默认 postgresql 管理员用户的密码。Database Migration Service 会以该用户的身份连接,以迁移您的数据。
  6. 点击开始迁移

    Database Migration Service 现在会创建迁移作业并开始迁移 过程。您可以监控迁移进度,以及您的 目标集群在 AlloyDB for PostgreSQL 中的健康状况。如需了解详情,请参阅 查看集群信息

针对现有集群的快速启动迁移

如需将数据库迁移到现有的 AlloyDB for PostgreSQL 集群,请按照以下步骤操作:

  1. 前往集群 页面。

    前往“集群”页面

  2. 选择要将数据库迁移到的 AlloyDB for PostgreSQL 集群。
  3. 在集群详情页面上,点击迁移数据
  4. 迁移数据 面板中,点击迁移数据库

    系统会打开 Database Migration Service 快速启动迁移表单。

  5. 配置迁移 部分中,执行以下操作:
    1. 目标区域 菜单中,选择目标 AlloyDB for PostgreSQL 集群的区域。
    2. 迁移前缀 框中,输入一个便于记忆的字符串,该字符串将添加到为快速启动迁移创建的所有迁移实体的名称中:连接配置文件、专用连接配置、网络连接及其子网,以及迁移作业。
    3. 配置类型 菜单中,选择以下选项之一:
      1. 现有连接配置:如果您已具有网络连接和在来源数据库 VPC 网络中使用 Private Service Connect 接口的专用连接配置,请选择此选项。如果您之前使用过 快速启动迁移,并且想要重复使用相同的网络资源,最好使用此选项。
      2. 新连接配置:选择此选项可在来源数据库 VPC 网络中创建新的网络连接、网络连接子网和专用连接配置。
    4. 点击继续
  6. 连接来源 部分中,执行以下操作:
    1. 输入来源数据库的主机名 或专用 IP 地址 。来源数据库地址必须可从来源 VPC 网络访问。
    2. 输入用于访问主机的端口 。默认 PostgreSQL 端口为 5432
    3. 输入来源数据库中专用迁移账号的用户名和密码。 在来源数据库中。
    4. 加密类型 菜单中,选择以下选项之一:
      • :如果来源数据库不需要 SSL/TLS 加密连接。
      • 必需:如果来源数据库需要 SSL/TLS 加密连接。此选项不需要任何证书验证。
    5. 要迁移的数据库 菜单中,点击自定义 。 使用侧边栏仅选择要迁移 到 AlloyDB for PostgreSQL 的数据库。
  7. 点击开始迁移

    Database Migration Service 现在会创建迁移作业并开始迁移 过程。您可以监控迁移进度,以及您的 目标集群在 AlloyDB for PostgreSQL 中的健康状况。如需了解详情,请参阅 查看集群信息

完成迁移

当您决定将应用切换到新的 AlloyDB for PostgreSQL 实例时,请按照以下步骤完成迁移:

  1. 停止对来源数据库的所有写入操作。您可以将它们 切换到只读模式以保留操作功能。
  2. 提升迁移作业。
  3. 可选: 验证迁移数据的完整性。

后续步骤