You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将PostgreSQL服务器完整迁移至另一服务器(云环境适配)

PostgreSQL云数据库(如AWS RDS)多库迁移方案(无超级用户)

由于云RDS等托管环境没有超级用户权限,直接使用pg_dumpall全量导出会因无法访问系统对象报错。以下是基于具备Create role、Create DB权限的永久密码用户的迁移流程:

前提条件

目标端的迁移用户需已配置Create role和Create DB权限,且密码为永久有效状态。

1. 迁移自定义角色(排除云服务商系统角色)

云环境中的系统角色(如AWS RDS的rds_superuser)无需迁移,通过过滤导出仅用户创建的角色:

pg_dumpall --roles-only -h 源端RDS地址 -U 迁移用户名 | grep -E -v "CREATE ROLE rds_|ALTER ROLE rds_|GRANT .* rds_" | psql -h 目标端地址 -U 迁移用户名

2. 迁移所有用户数据库

先获取源端所有非系统数据库列表,再逐个导出并导入:

第一步:生成用户数据库列表

psql -h 源端RDS地址 -U 迁移用户名 -t -c "SELECT datname FROM pg_database WHERE datistemplate = false AND datname NOT IN ('postgres');" > db_list.txt

第二步:批量迁移数据库

while read dbname; do
  pg_dump -C -h 源端RDS地址 -U 迁移用户名 "$dbname" | psql -h 目标端地址 -U 迁移用户名
done < db_list.txt

关键说明

  • -C 参数会在导出脚本中自动添加CREATE DATABASE语句,无需提前在目标端创建数据库
  • 若源端存在跨库权限授予,需单独导出权限脚本并在目标端执行(可通过pg_dump --schema-only --no-owner --no-privileges导出结构后,单独提取权限语句)
  • 确保目标端PostgreSQL版本与源端兼容(建议同版本或更高版本)

内容的提问来源于stack exchange,提问作者Adwait Gawade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 09:16:17