RDS PostgreSQL的一键上云功能不仅支持阿里云ECS或IDC自建PostgreSQL的一键上云,还支持RDS PostgreSQL实例跨地域迁移,本文介绍如何使用一键上云功能,实现RDS PostgreSQL实例间的跨地域迁移。

前提条件

RDS PostgreSQL实例需要满足以下条件:
  • 源实例与目标实例大版本相同,当前支持PostgreSQL 14、13、12、11和10。
  • 目标实例为主实例,只读实例不支持一键上云。
  • 目标实例的存储类型为云盘。
  • 目标实例为空,无数据,可用存储空间大于等于源实例中数据大小的总和。
  • 源实例和目标实例所使用的VPC网段不能冲突。

注意事项

RDS PostgreSQL实例跨地域迁移时,需要使用云企业网实现跨地域内网互通,会产生相关费用,具体请参见计费概览

操作步骤

说明 本文以华北2(北京)的RDS PostgreSQL实例迁移到华东1(杭州)为例。
  1. 云企业网配置,使不同地域的两个RDS PostgreSQL实例内网互通。
    1. 创建云企业网实例。
      1. 登录云企业网管理控制台
      2. 云企业网实例页面,单击创建云企业网实例
      3. 创建云企业网实例页面,根据以下信息配置云企业网实例,然后单击确认
        配置 说明
        名称 云企业网实例的名称。

        名称在2~128个字符之间,以大小写字母或中文开头,可包含数字、短划线(-)或下划线(_)。

        描述 云企业网实例的描述。

        描述可以为空或可以填写2~256个中英文字符,不能以http://https://开头。

    2. 为云企业网实例添加VPC。
      1. 云企业网实例页面,单击已创建的云企业网实例ID。
      2. 基本信息页面,单击下图中VPC数量后的添加网络实例图标,为云企业网实例添加VPC。VPC后的加好
      3. 连接网络实例页面,配置网络实例信息后,单击确认创建
        说明 本步骤需要分别添加源实例和目标实例的VPC,因此需要添加两次,下表以添加源实例的VPC为例,添加目标实例VPC的操作方法相同,地域网络实例参数,请修改为目标实例的地域和VPC。
        参数 取值说明
        实例类型 默认为专有网络(VPC),无需修改。
        地域 选择源实例所在地域,本示例选择华北2(北京)
        转发路由器 默认当前地域下无转发路由器,系统将默认创建,分别选择转发路由器的主可用区和备可用区。
        资源归属UID 选择同账号
        连接名称 自定义。
        网络实例 选择源实例使用的VPC实例。可在RDS管理控制台的数据库连接中查看VPC ID。源实例VPC实例ID

        选择VPC后,分别选择转发路由器配置的主备可用区对应的交换机。

      创建完成后,结果示例如下:云企业网路由
    3. 购买跨地域带宽。
      1. 云企业网实例页面,单击已创建的云企业网实例ID。
      2. 基本信息页面,切换到带宽包管理页签,单击购买带宽包(预付费)
      3. 在购买页面,根据以下信息配置带宽包,然后单击立即购买并完成支付。
        配置项 说明
        云企业网 默认选择当前云企业网,无需修改。带宽包购买成功后,带宽包自动绑定至该云企业网实例。
        区域-A 选择参与互通的网络实例所在区域。本示例选择中国内地
        说明 带宽包创建后,不支持修改互通区域。
        区域-B 选择参与互通的网络实例所在区域。本示例选择中国内地
        计费方式 显示带宽包的计费方式。默认为按带宽计费。
        带宽值 选择带宽值。单位:Mbps。
        带宽包名称 输入带宽包的名称。
        购买时长 选择带宽包的购买时长。

        选中到期自动续费可开启带宽包自动续费功能。

      购买完成后,结果示例如下:带宽包结果
    4. 设置跨地域带宽。
      1. 云企业网实例页面,单击已创建的云企业网实例ID。
      2. 基本信息页面,切换到带宽包管理页签,单击设置跨地域带宽
      3. 连接网络实例页面,配置跨地域连接信息,然后单击确定创建
        配置项 说明
        实例类型 选择跨地域
        地域 源实例的地域。本示例选择华北2(北京)
        转发路由器 自动获取已创建的转发路由器,无需配置。
        对端地域 目标实例的地域,本示例选择华东1(杭州)
        转发路由器 自动获取已创建的转发路由器,无需配置。
        带宽包实例 选择云企业网实例已绑定的带宽包实例。
        带宽 输入允许使用的带宽值。单位:Mbps。
      创建成功后,结果示例如下:设置带宽包
  2. 源实例配置。
    1. 添加白名单。
      添加白名单的具体操作,请参见设置白名单组内白名单请填写目标实例的VPC网段。
      目标实例的VPC网段查看方法:
      1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
      2. 在左侧导航栏单击一键上云,单击上云评估页签。
      3. 在配置向导的选择迁移来源步骤,选择迁移来源为阿里云ECS自建PostgreSQL或阿里云RDS PostgreSQL后,单击下一步
      4. 目标库配置步骤,查看目标实例的当前VPC网段
    2. 创建高权限账号。
      创建账号的具体操作,请参见创建账号账号类型请选择高权限账号。
      说明 高权限账号用于迁移上云,需要具备CREATE ROLE、REPLICATION和pg_monitor权限。如果您已有高权限的账号,则无需重复创建。
  3. 目标实例配置。
    1. 上云评估。
      1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
      2. 在左侧导航栏单击一键上云,单击上云评估页签。
      3. 在配置向导的选择迁移来源步骤,选择迁移来源为阿里云ECS自建PostgreSQL或阿里云RDS PostgreSQL后,单击下一步
      4. 目标库配置步骤,单击下一步
      5. 源库配置步骤,选中所有配置准备项,单击下一步
      6. 发起迁移评估步骤,配置源库信息。
        参数 取值说明
        迁移任务名 系统自动生成,无需修改。
        源端 VPC IP/DNS 填写源实例的内网连接地址。具体请参见查看内网地址
        源端Port 填写源实例的端口,具体请参见查看端口
        用户名 源实例中创建的高权限数据库账号。
        密码 源实例中创建的高权限数据库账号的密码。
      7. 单击创建迁移评估任务
        说明 迁移评估任务期间,实例状态将变更为维护实例中
        迁移评估完成后,您可以在上云评估页面查看迁移评估任务的状态。
        • 只有状态成功,您才能进行迁移上云步骤。
        • 如果状态失败,请单击操作列的查看报告,根据报错进行处理,常见报错请参见解读上云评估报告
        上云评估状态
    2. 迁移上云。
      1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
      2. 在左侧导航栏单击一键上云,切换至迁移上云页签,单击创建迁移上云任务。
      3. 创建迁移上云任务窗口中,从关联评估任务列表中选择已成功的上云评估任务。
        说明 选择关联评估任务后,源库类型源端 IP/DNS源端Port用户名参数将会自动获取,无需配置。
      4. 单击发起迁移上云,系统将自动启动上云任务。
        注意 上云任务期间,实例状态将变更为迁入数据中。您可以对源实例进行读写,但请勿执行迁移、重启、变配等操作。
      创建成功后,结果示例如下:迁移上云
    3. 将目标RDS PostgreSQL提升为主库。
      1. 在迁移上云任务中,单击上云阶段列的链接,查看当前上云任务进度。上云进度
      2. 当上云阶段为增量同步时,可单击操作列的上云切换,将目标RDS PostgreSQL提升为主库,正式提供服务。
      3. 切换上云窗口,根据上云须知提示,设置源实例只读或应用停止写入。
        说明 使用高权限用户配置如下命令,设置源实例只读:
        -- 设置数据库只读
        ALTER SYSTEM SET default_transaction_read_only=on;
        
        -- 重新加载参数配置使修改生效
        SELECT pg_reload_conf();
        
        -- 中断所有现有会话
        SELECT pg_terminate_backend(pid) FROM pg_stat_activity 
        WHERE usename not in ('replicator', 'monitor', 'pgsql', 'aurora') AND pid != pg_backend_pid();
      4. 选中所有复选框,单击立即切换,等待迁移完成。
        切换完成后,结果示例如下:迁移完成