如何将单个Postgres数据库从一个RDS实例迁移到另一个RDS实例
可行迁移方案
方案1:中间主机(本地设备/EC2实例)中转执行pg_dump+pg_restore
这是最通用的轻量迁移方案,无额外服务依赖,适配绝大多数场景:
- 提前配置两个RDS实例的安全组规则,放通中间主机IP的5432端口入站权限,确保中间主机可以同时访问两个RDS实例
- 中间主机安装对应版本PostgreSQL客户端,需保证
pg_dump、pg_restore的版本不低于源RDS的PostgreSQL大版本,避免兼容性问题 - 小库场景可以直接用管道命令完成实时导出导入,无需占用本地存储空间:
pg_dump -h [源RDS A的访问地址] -U [源实例用户名] -d [待迁移数据库名] -Fc | pg_restore -h [目标RDS B的访问地址] -U [目标实例用户名] -d [目标空库名] -v
- 大库场景可以拆分导出导入步骤,方便进度管控:
- 导出源库备份到本地:
pg_dump -h [源RDS A的访问地址] -U [源实例用户名] -d [待迁移数据库名] -Fc -j [并行导出线程数] -f ./rds_mig_bak.dump - 将备份导入目标RDS:
pg_restore -h [目标RDS B的访问地址] -U [目标实例用户名] -d [目标空库名] -j [并行导入线程数] -v ./rds_mig_bak.dump
- 导出源库备份到本地:
- 迁移完成后手动校验数据一致性,包括表数量、记录行数、核心业务表字段内容等。
方案2:使用AWS原生DMS(数据迁移服务)
适合有增量同步需求、要求低停机时间的业务场景:
- 提前在目标RDS B中创建好同名空数据库,若源库使用了
postgis等自定义插件,需要提前在目标库中安装相同版本的对应插件 - 配置DMS源端点指向RDS A的待迁移数据库,目标端点指向RDS B的目标库
- 创建迁移任务时选择仅迁移指定单个数据库,可根据业务需求选择「全量迁移」或「全量+增量同步」模式
- 迁移任务完成、数据校验通过后,将业务流量切到目标RDS,之后停止DMS任务即可。
注意事项
- 迁移前确认两个RDS实例的字符集、排序规则等核心参数配置一致,避免导入报错
- 若选择全量迁移方案,建议迁移前暂停源库的写入操作,避免导出的备份数据不一致
- 大库迁移建议避开业务高峰执行,避免影响线上业务正常运行
内容的提问来源于stack exchange,提问作者M. Van De Velde
相关产品推荐
相关产品推荐

