RDS PostgreSQL的一键上云功能不仅支持阿里云ECS或IDC自建PostgreSQL的一键上云,还支持RDS PostgreSQL实例缩容存储空间,本文介绍RDS PostgreSQL实例缩容的具体操作。

背景信息

RDS PostgreSQL实例的变更配置,不支持缩小存储空间,而一键上云功能可以实现实例间的迁移,您可以根据实际需要,将实例迁移至存储空间小于当前实例的新实例上,从而达到缩容的目的。

一键上云功能具有以下优势:
  • 采用物理流复制方式,速度快、操作简单、稳定性好。
  • 使用内网迁移,免费,安全。
  • 限制条件少,目标实例为云盘主实例,大版本与源实例一致即可。
  • 性能与源实例保持一致,统计信息等与源实例保持一致。

前提条件

已创建目标实例并满足以下条件:
  • 目标实例与源实例大版本相同,当前支持PostgreSQL 10或以上版本。
  • 目标实例为主实例,只读实例不支持一键上云。
  • 目标实例的存储类型为云盘。
  • 目标实例为空,无数据。
  • 目标实例的存储空间需要提前规划,推荐预留20%以上可用存储空间。

    例如,源实例已使用200GB,目标实例需要购买的存储空间至少为200÷(1-20%)=250 GB

操作步骤

说明 本文以华东1(杭州)同一VPC下的两个RDS PostgreSQL实例间迁移为例,源实例存储空间为500 GB,实际使用200 GB,迁移至存储空间为250 GB的目标实例。
  1. 源实例配置。
    1. 添加白名单。
      添加白名单的具体操作,请参见设置白名单组内白名单请填写目标实例的VPC网段。
      查看方法:
      1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
      2. 在左侧导航栏单击数据库连接,在网络类型中查看VPC网段。VPC网段
    2. 创建高权限账号。
      创建账号的具体操作,请参见创建账号账号类型请选择高权限账号。
      说明 高权限账号用于迁移上云,需要具备CREATE ROLE、REPLICATION和pg_monitor权限。如果您已有高权限的账号,则无需重复创建。
  2. 目标实例配置。
    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. 切换上云窗口,根据上云须知提示,设置源实例只读或应用停止写入。
        说明 参考如下步骤,设置源实例只读:
        1. 通过设置实例参数功能,修改源实例参数rds_force_trans_ro_non_sup取值为on
        2. 使用如下语句,中断所有现有会话。
          SELECT pg_terminate_backend(pid) FROM pg_stat_activity 
          WHERE usename not in ('replicator', 'monitor', 'pgsql', 'aurora') AND pid != pg_backend_pid();
      4. 选中所有复选框,单击立即切换,等待迁移完成。

后续配置

为了确保RDS PostgreSQL实例缩容后,应用侧在不修改业务代码的情况下依然正常连接,还需要在目标实例做如下配置。

  1. 修改目标实例白名单设置,与源实例白名单保持一致。更多信息,请参见设置白名单
  2. 修改目标实例的连接地址,与源实例连接地址相同。修改方法请参见修改内外网连接地址
    以源实例连接地址为pgm-aaa.pg.rds.aliyuncs.com,目标实例连接地址为pgm-bbb.pg.rds.aliyuncs.com为例,修改方法如下。
    1. 将源实例连接地址pgm-aaa.pg.rds.aliyuncs.com修改为pgm-ccc.pg.rds.aliyuncs.com
    2. 将目标实例连接地址pgm-bbb.pg.rds.aliyuncs.com修改为pgm-aaa.pg.rds.aliyuncs.com