Linux pgAdmin怎样进行迁移
小樊
33
2025-11-30 03:09:39
Linux 上 pgAdmin 迁移指南
迁移目标与准备
- 明确迁移对象:
- 迁移 pgAdmin 4 的配置与元数据(服务器列表、用户、偏好等)。
- 迁移 被管理的 PostgreSQL 数据库(业务数据)。
- 版本与目录要点:
- 常见安装方式及关键目录(以实际环境为准):
- RPM/YUM(httpd/Wsgi):配置 /etc/httpd/conf.d/pgadmin4.conf,数据 /var/lib/pgadmin4/,日志 /var/log/pgadmin4/。
- DEB/APT(桌面版):配置与数据常在用户目录 ~/.pgadmin/。
- 建议先停服务再迁移,避免运行时文件变更导致不一致:例如 systemctl stop httpd 或停止桌面会话。
- 预估空间并准备传输工具(如 rsync/scp),确保目标机器磁盘与权限满足要求。
迁移 pgAdmin 4 的配置与元数据
- 方式一(同版本直拷,适用于 RPM/YUM 与 DEB/APT)
- 停服务:systemctl stop httpd(或暂停桌面会话)。
- 打包并复制关键目录:
- RPM/YUM:
tar czf pgadmin4-data.tar.gz /var/lib/pgadmin4 /var/log/pgadmin4 /etc/httpd/conf.d/pgadmin4.conf
scp pgadmin4-data.tar.gz user@new:/tmp
在目标机:tar xzf /tmp/pgadmin4-data.tar.gz -C /
- DEB/APT:
tar czf pgadmin4-home.tar.gz ~/.pgadmin
scp pgadmin4-home.tar.gz user@new:~
在目标机:tar xzf ~/pgadmin4-home.tar.gz -C ~
- 如目录或 SELinux 标签变更,修正所有权与上下文:
chown -R apache:apache /var/lib/pgadmin4 /var/log/pgadmin4(RPM/YUM)
chcon -R -t httpd_sys_rw_content_t /var/lib/pgadmin4 /var/log/pgadmin4(RHEL/CentOS SELinux)
- 启动服务:systemctl start httpd;或在桌面版重新登录。
- 登录验证服务器列表、登录账号与偏好是否完整。
- 方式二(跨版本或无法直拷)
- 在新环境全新安装同版本 pgAdmin 4,首次登录后导出连接/服务器定义为 JSON(若界面提供),或手动在新环境重新添加服务器连接;偏好设置按需重新配置。
迁移被管理的 PostgreSQL 数据库
- 逻辑迁移(推荐,跨版本/跨平台通用)
- 在源库导出:
- 自定义格式(便于后续选择性恢复与并行):
pg_dump -U username -h hostname -p port -F c -b -v -f backup.dump database_name
- 纯 SQL 脚本:
pg_dump -U username -h hostname -p port database_name > backup.sql
- 将备份传至目标机:scp backup.* user@new:/path/
- 在目标库恢复:
- 自定义格式:
pg_restore -U username -h hostname -p port -d database_name -v backup.dump
- SQL 脚本:
psql -U username -h hostname -p port -d database_name -f backup.sql
- 校验对象数量、数据一致性(如行数、重要表抽样)。
- 物理迁移(仅限同版本、同平台、停机窗口充足)
- 源库停写:pg_ctl stop 或 systemctl stop postgresql
- 拷贝数据目录(Data Directory)到目标机相同路径或配置到新路径
- 目标库启动并校验:pg_ctl start;检查日志与数据库可用性。
验证与常见问题
- 验证清单
- pgAdmin 能正常登录,服务器树、登录角色、驱动与偏好设置完整。
- 各业务库可连接,关键表数据一致(数量、抽样校验)。
- 日志无异常:/var/log/pgadmin4/*.log、PostgreSQL 服务日志。
- 常见问题与处理
- 版本不一致导致元数据或恢复失败:尽量保持 pgAdmin 4 与目标 PostgreSQL 的版本一致或做充分演练。
- 权限/所有权错误:RPM/YUM 下确保 apache:apache 拥有 /var/lib/pgadmin4 与 /var/log/pgadmin4;必要时 restorecon/chcon 修正 SELinux。
- 直拷后 pgAdmin 页面 403/500:检查 WSGI 配置、目录权限与 SELinux 上下文,必要时重启 httpd。
- 大对象(BLOB)未恢复:导出时使用 -b,恢复时使用 pg_restore 的相应选项。