温馨提示×

centos pgadmin数据库如何迁移

小樊
33
2025-12-21 15:17:01
栏目: 智能运维

CentOS 上迁移 pgAdmin 与 PostgreSQL 的可行方案


迁移目标与总体思路

  • 明确迁移对象:一是迁移 pgAdmin 的配置与服务器书签(便于在新环境继续使用 pgAdmin 管理),二是迁移 PostgreSQL 数据库本身(结构与数据)。
  • 常用工具与方式:
    • 数据库迁移:pg_dump/pg_restore(自定义格式,适合单库)、pg_dumpall(全库与角色)、psql(纯 SQL 脚本导入)、以及 pgloader(异构或直连迁移)。
    • 传输方式:scp/sftp/rsync;跨云或受限网络可通过“中转主机”或临时开通网络策略完成文件传递。

迁移 pgAdmin 配置与书签

  • 适用场景:将 pgAdmin 4 的配置、服务器组与连接信息从旧 CentOS 迁移到新 CentOS
  • 操作步骤:
    1. 停止 pgAdmin 服务(若以服务运行):
      • 例如使用 systemd:systemctl stop pgadmin4(或 pgadmin4-web)
    2. 备份配置与数据目录(默认位置因安装方式而异,常见为 /var/lib/pgadmin/etc/pgadmin):
      • rsync -a /var/lib/pgadmin/ /path/to/backup/pgadmin-data/
      • rsync -a /etc/pgadmin/ /path/to/backup/pgadmin-conf/
    3. 将备份目录复制到新机器相同路径(或你在新机器规划的路径)。
    4. 在新机器启动 pgAdmin,确认服务器树与登录信息是否完整;如有路径变更,按需调整 pgAdmin 配置文件中的存储路径项。
    5. 验证:登录 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(跨云或网络隔离):中转传输 + 标准工具

    • 步骤建议:
      1. 在源环境用 pg_dump/pg_restore 生成备份文件;
      2. 通过 sftp/rsync 将备份文件先传到“中转主机”,再传到目标环境(适用于无公网直连的跨云场景);
      3. 在目标环境用 pg_restore/psql 完成导入;
      4. 校验数据一致性与对象完整性。
  • 方案 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 语句批量导入。

0