MyBase PostgreSQL迁移至RDS PostgreSQL

本文介绍如何通过一键上云将MyBase PostgreSQL迁移至RDS PostgreSQL。

准备工作

  1. 创建RDS PostgreSQL实例并满足以下条件:

    • 版本系列与MyBase PostgreSQL实例保持一致。

    • 磁盘空间大于MyBase PostgreSQL实例数据库的占用空间。

    • 规格族为独享型

    如何创建,请参见快速创建RDS PostgreSQL实例

    说明
  2. 设置白名单,确保RDS PostgreSQL和MyBase PostgreSQL实例可以互相访问。如何设置,请参见设置RDS PostgreSQL实例白名单设置MyBase PostgreSQL实例白名单

    您可以登录RDS或MyBase控制台,在数据库连接页面,查看RDS PostgreSQL或MyBase PostgreSQL实例的网段。查看网段

  3. 创建MyBase PostgreSQL实例高权限账号。如何创建,请参见创建数据库账号

注意事项

  • 迁移上云任务期间可以对MyBase PostgreSQL数据库进行读写,但请勿执行迁移、重启、变配等操作。

  • 设置MyBase PostgreSQL实例只读,业务仅能读取,不能写入。

  • 新通用型规格实例暂不支持外网迁移。

步骤一:上云评估

  1. 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。

  2. 在左侧导航栏单击一键上云/容灾搭建,单击可行性评估页签。

  3. 在配置向导的选择场景与源端类型步骤,选择场景为迁移上云,并选择源端为阿里云RDS实例,然后单击下一步

  4. 目标实例配置步骤,单击下一步

  5. 源实例配置步骤,选中所有已完成的配置准备项,单击下一步。

  6. 发起可行性评估步骤,配置源库信息。

    参数

    取值说明

    迁移任务名

    系统自动生成,无需修改。

    源端 VPC IP/DNS

    MyBase PostgreSQL实例的链接地址。查看实例的内外网地址,请参见查看或修改内外网地址和端口

    源端Port

    MyBase PostgreSQL实例的端口号,查看实例的端口号,请参见查看或修改内外网地址和端口

    用户名

    MyBase PostgreSQL实例高权限账号。查看实例账号,请参见查看数据库账号

    密码

    MyBase PostgreSQL实例高权限账号的密码。

  7. 单击创建可行性评估任务

    说明

    迁移评估任务期间,实例状态将变更为维护实例中

    迁移评估完成后,您可以在可行性评估页面的迁移上云列表查看迁移评估任务的状态。

    处理报错后,您可以单击操作列的重新评估,重新开始评估任务。

    上云评估报告

步骤二:迁移上云

说明

只有上云评估状态为成功时,才能执行本步骤。

  1. 迁移上云页签,单击创建迁移上云任务

    创建迁移上云任务

  2. 在弹出的对话框,从关联评估任务列表中选择步骤一:上云评估中已成功的上云评估任务。

    迁移上云

    说明

    选择关联评估任务后,源库类型源端 IP/DNS源端Port用户名参数将会自动获取,无需配置。

  3. 单击发起迁移上云,系统将自动启动上云任务。

    重要

    上云任务期间,实例状态将变更为迁入数据中。您可以对MyBase PostgreSQL数据库进行读写,但请勿执行迁移、重启、变配等操作。

  4. 上云切换。

    1. 在迁移上云任务中,单击上云阶段列的链接,查看当前上云任务进度。

    2. 当上云阶段为增量同步时,可单击操作列的上云切换,将RDS PostgreSQL提升为主库,正式提供服务。

    3. 切换上云对话框,根据上云须知提示,设置MyBase PostgreSQL实例只读或应用停止写入。

      切换上云

      说明

      设置MyBase PostgreSQL实例只读:

      登录MyBase PostgreSQL数据库,执行以下命令,确认是否存在超级用户。

      SELECT CASE WHEN(count(rolname)<= 3) THEN 'superuser check ok' ELSE 'exists superuser created by user' END AS result
        FROM pg_roles
       where rolsuper= 't'
         and rolname in ('aurora', 'replicator')
          or rolname like 'pg%'
       GROUP BY rolname
       limit 1;
      • 若存在超级用户,您需要联系阿里云工程师修改。

      • 若不存在超级用户时,请参见如下步骤修改:

        1. 登录云数据库专属集群控制台

        2. 通过参数设置功能,修改参数rds_force_trans_ro_non_sup取值为on修改参数

        3. 修改完成后,登录MyBase PostgreSQL数据库,执行以下命令,中断所有现有会话。

          SELECT pg_terminate_backend(pid) FROM pg_stat_activity
          WHERE usename not in ('replicator', 'monitor', 'pgsql', 'aurora') AND pid != pg_backend_pid();
    4. 选中所有复选框,单击立即切换,等待迁移完成。

步骤四:连接应用

方案一:交换连接地址(推荐)

查看并修改MyBase PostgreSQL实例的连接地址,然后将RDS PostgreSQL实例的连接地址修改为MyBase PostgreSQL实例的原地址。

假如您的MyBase PostgreSQL实例的连接地址为pgm-aaa.pg.rds.aliyuncs.com,RDS PostgreSQL实例的连接地址为pgm-bbb.pg.rds.aliyuncs.com。您可以将MyBase PostgreSQL实例的连接地址修改为pgm-ccc.pg.rds.aliyuncs.com,再将RDS PostgreSQL实例的连接地址修改为pgm-aaa.pg.rds.aliyuncs.com即可。

方案二:切换应用连接地址

查看并获取RDS PostgreSQL实例的连接地址,修改您应用服务中的数据库连接地址。