本文介绍如何通过一键上云将MyBase PostgreSQL迁移至RDS PostgreSQL。
准备工作
- 创建RDS PostgreSQL实例并满足以下条件:
- 版本、系列与MyBase PostgreSQL实例保持一致。
- 磁盘空间大于MyBase PostgreSQL实例数据库的占用空间。
- 规格族为独享型。
如何创建,请参见创建RDS PostgreSQL实例。
- 设置白名单,确保RDS PostgreSQL和MyBase PostgreSQL实例可以互相访问。如何设置,请参见设置RDS PostgreSQL实例白名单和设置MyBase PostgreSQL实例白名单。
您可以登录RDS或MyBase控制台,在
数据库连接页面,查看RDS PostgreSQL或MyBase PostgreSQL实例的网段。

- 创建MyBase PostgreSQL实例高权限账号。如何创建,请参见创建数据库账号。
注意事项
- 迁移上云任务期间可以对MyBase PostgreSQL数据库进行读写,但请勿执行迁移、重启、变配等操作。
- 设置MyBase PostgreSQL实例只读,业务仅能读取,不能写入。
- 新通用型规格实例暂不支持外网迁移。
步骤一:上云评估
- 访问RDS实例列表,在上方选择地域,然后单击目标实例ID。
- 在左侧导航栏单击一键上云,单击上云评估页签。
- 在配置向导的选择迁移来源步骤,选择阿里云ECS自建PostgreSQL或阿里云RDS PostgreSQL迁移来源,然后单击下一步。

- 在目标库配置步骤,单击下一步。
- 在源库配置步骤,选中所有已完成的配置准备项,单击下一步。
- 在发起迁移评估步骤,配置源库信息。
参数 |
取值说明 |
迁移任务名 |
系统自动生成,无需修改。 |
源端 VPC IP/DNS或源端 公网IP/DNS |
MyBase PostgreSQL实例的链接地址。查看实例的内外网地址,请参见查看或修改内外网地址和端口。
|
源端Port |
MyBase PostgreSQL实例的端口号,查看实例的端口号,请参见查看或修改内外网地址和端口。
|
用户名 |
MyBase PostgreSQL实例高权限账号。查看实例账号,请参见查看数据库账号。
|
密码 |
MyBase PostgreSQL实例高权限账号的密码。 |
- 单击创建迁移评估任务。
说明 迁移评估任务期间,实例状态将变更为维护实例中。
迁移评估完成后,您可以在
上云评估页面查看迁移评估任务的状态。
- 只有状态为成功,您才能进行迁移上云步骤,具体请参见步骤二:迁移上云。
- 如果状态为失败,请单击操作列的查看报告,根据报错进行处理,常见报错请参见解读上云评估报告。
处理报错后,您可以单击操作列的重新评估,重新开始评估任务。

步骤二:迁移上云
- 在迁移上云页签,单击创建迁移上云任务。
- 在弹出的对话框,从关联评估任务列表中选择步骤一:上云评估中已成功的上云评估任务。

说明 选择关联评估任务后,源库类型、源端 IP/DNS、源端Port和用户名参数将会自动获取,无需配置。
- 单击发起迁移上云,系统将自动启动上云任务。
重要 上云任务期间,实例状态将变更为迁入数据中。您可以对MyBase PostgreSQL数据库进行读写,但请勿执行迁移、重启、变配等操作。
- 上云切换。
- 在迁移上云任务中,单击上云阶段列的链接,查看当前上云任务进度。
- 当上云阶段为增量同步时,可单击操作列的上云切换,将RDS PostgreSQL提升为主库,正式提供服务。
- 在切换上云对话框,根据上云须知提示,设置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;
- 若存在超级用户,您需要联系阿里云工程师修改。
- 若不存在超级用户时,请参见如下步骤修改:
- 登录云数据库专属集群控制台。
- 通过参数设置功能,修改参数rds_force_trans_ro_non_sup取值为on。

- 修改完成后,登录MyBase PostgreSQL数据库,执行以下命令,中断所有现有会话。
SELECT pg_terminate_backend(pid) FROM pg_stat_activity
WHERE usename not in ('replicator', 'monitor', 'pgsql', 'aurora') AND pid != pg_backend_pid();
- 选中所有复选框,单击立即切换,等待迁移完成。
步骤四:连接应用
方案一:交换连接地址(推荐)
查看并修改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实例的连接地址,修改您应用服务中的数据库连接地址。