CentOS 上迁移 pgAdmin 与 PostgreSQL 的可行方案
迁移目标与总体思路
- 明确迁移对象:一是迁移 pgAdmin 的配置与服务器书签(便于在新环境继续使用 pgAdmin 管理),二是迁移 PostgreSQL 数据库本身(结构与数据)。
- 常用工具与方式:
- 数据库迁移:pg_dump/pg_restore(自定义格式,适合单库)、pg_dumpall(全库与角色)、psql(纯 SQL 脚本导入)、以及 pgloader(异构或直连迁移)。
- 传输方式:scp/sftp/rsync;跨云或受限网络可通过“中转主机”或临时开通网络策略完成文件传递。
迁移 pgAdmin 配置与书签
- 适用场景:将 pgAdmin 4 的配置、服务器组与连接信息从旧 CentOS 迁移到新 CentOS。
- 操作步骤:
- 停止 pgAdmin 服务(若以服务运行):
- 例如使用 systemd:systemctl stop pgadmin4(或 pgadmin4-web)
- 备份配置与数据目录(默认位置因安装方式而异,常见为 /var/lib/pgadmin 与 /etc/pgadmin):
- rsync -a /var/lib/pgadmin/ /path/to/backup/pgadmin-data/
- rsync -a /etc/pgadmin/ /path/to/backup/pgadmin-conf/
- 将备份目录复制到新机器相同路径(或你在新机器规划的路径)。
- 在新机器启动 pgAdmin,确认服务器树与登录信息是否完整;如有路径变更,按需调整 pgAdmin 配置文件中的存储路径项。
- 验证:登录 pgAdmin,展开服务器组,测试连接可用性。
迁移 PostgreSQL 数据库
-
方案 A(同版本、离线、单库推荐):使用 pg_dump 自定义格式 + pg_restore
- 源库导出(自定义格式,便于跨机器与保留对象属性):
- pg_dump -h 源主机 -p 5432 -U 用户名 -F c -b -v -f dbname.dump 目标库名
- 目标库准备:
- 在目标环境(如 RDS PostgreSQL 或自建实例)先创建空库,并确认 Owner、Encoding、Collate、Ctype 与源库一致(可用 psql 的 \l 查看)。
- 目标库导入:
- pg_restore -h 目标主机 -p 5432 -U 用户名 -d 目标库名 -v dbname.dump
- 适用说明:自定义格式(-F c)支持并行与对象还原控制,适合大多数单库迁移。
-
方案 B(纯 SQL 脚本、便于审阅与编辑):使用 pg_dump 纯文本 + psql
- 导出:
- pg_dump -h 源主机 -p 5432 -U 用户名 -F p -f backup.sql 目标库名
- 导入:
- psql -h 目标主机 -p 5432 -U 用户名 -d 目标库名 -f backup.sql
- 提示:纯文本脚本导入速度通常慢于 COPY/自定义格式;如需更快导入,优先使用自定义格式或确保目标库使用 COPY 语句导入。
-
方案 C(跨云或网络隔离):中转传输 + 标准工具
- 步骤建议:
- 在源环境用 pg_dump/pg_restore 生成备份文件;
- 通过 sftp/rsync 将备份文件先传到“中转主机”,再传到目标环境(适用于无公网直连的跨云场景);
- 在目标环境用 pg_restore/psql 完成导入;
- 校验数据一致性与对象完整性。
-
方案 D(异构或直连迁移):使用 pgloader
- 适合从 MySQL、SQL Server 等迁移到 PostgreSQL,也可在同构间做直连迁移与转换:
- pgloader mysql://user:pass@src/db postgresql://user:pass@dst/db
- 优势:支持自动建表、类型映射、并发与错误容错。
迁移用户与权限
- 若迁移涉及自定义角色/权限,使用 pg_dumpall -g 导出全局角色与权限,在目标库执行生成的 SQL 以恢复角色:
- pg_dumpall -g -h 源主机 -U 超级用户 -f roles.sql
- 在目标库:psql -h 目标主机 -U 超级用户 -f roles.sql
- 注意:目标库需先存在对应数据库,且角色名、密码与权限策略按需要进行调整。
校验与常见问题
- 基本校验:
- 对象数量与大小:对比 \dt、\dn、\df+ 等;
- 数据量抽样校验:对关键表做 COUNT/校验和;
- 业务侧回归:核心流程与报表验证。
- 常见问题与处理:
- 版本不兼容:尽量保持 源/目标 PostgreSQL 大版本一致;必要时先迁移后升级。
- 编码/本地化不一致:创建目标库时显式指定 Encoding、Collate、Ctype 与源库一致。
- 网络不通:跨云或受限网络使用 中转主机 + sftp/rsync 完成备份文件传递。
- 导入速度慢:优先使用 自定义格式(-F c)+ pg_restore,或确保使用 COPY 语句批量导入。