centos

centos pgadmin数据迁移方法

小樊
48
2025-10-11 06:39:11
栏目: 智能运维

一、准备工作

  1. 安装pgAdmin:在CentOS上通过包管理器(如yum)安装pgAdmin,或下载官方安装包手动配置。例如,使用sudo yum install pgadmin4安装。
  2. 连接源与目标数据库:打开pgAdmin,点击左侧“Servers”→“Create”→“Server”,分别输入源数据库(含源服务器IP、端口、数据库名、用户名/密码)和目标数据库(含目标服务器信息)的连接配置,保存后建立连接。
  3. 权限与备份:确保当前用户对源数据库有SELECT权限,对目标数据库有CREATEINSERT权限;迁移前使用pg_dump或pgAdmin的“备份”功能备份源数据库,防止数据丢失。

二、使用pgAdmin图形界面迁移(适合小规模数据)

  1. 导出数据(源数据库→文件)

    • 在pgAdmin左侧树形结构中,展开源数据库服务器,右键点击需要迁移的数据库,选择“Export Data”。
    • 在弹出的对话框中,选择“Export Format”(如SQL、CSV;SQL格式保留表结构和数据,适合完整迁移;CSV适合与电子表格兼容),勾选“Export Data”(导出数据)和“Export Structure”(导出表结构)。
    • 配置导出文件路径(如本地/tmp/backup.sql或目标服务器共享目录),点击“OK”完成导出。
  2. 导入数据(文件→目标数据库)

    • 在pgAdmin左侧树形结构中,展开目标数据库服务器,右键点击目标数据库(需提前创建,可使用CREATE DATABASE target_db;),选择“Import Data”。
    • 在弹出的对话框中,点击“Choose File”选择之前导出的文件(如/tmp/backup.sql),确认“Format”与导出时一致。
    • 勾选“Import Data”和“Import Structure”(若导出时包含结构),点击“OK”开始导入;等待进度条完成,查看“Messages”标签页确认无错误。
  3. 可选:数据同步(可选步骤)

    • 若需同步源与目标数据库的差异,可使用pgAdmin的“数据比较”功能:右键点击源数据库→“Data Compare”,选择目标数据库,勾选需要同步的表,点击“Compare”查看差异,再使用“Synchronize”功能同步数据。

三、使用命令行工具迁移(适合大规模数据,效率高)

  1. 使用pg_dump/pg_restore(逻辑备份/恢复)

    • 备份源数据库:在源服务器终端执行pg_dump -U postgres -h 源服务器IP -p 5432 源数据库名 -f /tmp/backup.sql-U指定用户名,-h指定源服务器IP,-p指定端口,默认5432,-f指定输出文件)。
    • 传输备份文件:使用scp将备份文件传输到目标服务器,例如scp /tmp/backup.sql 目标用户@目标服务器IP:/tmp/
    • 恢复到目标数据库:在目标服务器终端执行psql -U postgres -h 目标服务器IP -p 5432 目标数据库名 -f /tmp/backup.sql-f指定输入文件)。
  2. 使用pg_dumpall(迁移整个集群)

    • 若需要迁移源服务器上的所有数据库(包括角色、表空间等),可使用pg_dumpall:在源服务器执行pg_dumpall -U postgres -h 源服务器IP -p 5432 -f /tmp/all_databases.sql
    • 传输文件到目标服务器(同上),然后在目标服务器执行psql -U postgres -h 目标服务器IP -p 5432 -f /tmp/all_databases.sql(无需提前创建数据库,pg_dumpall会自动创建)。

四、注意事项

  1. 版本兼容性:确保源服务器与目标服务器的PostgreSQL版本兼容(如源版本为12,目标版本为13及以上,需注意pg_dump的版本是否支持目标版本)。
  2. 权限检查:迁移前确认源数据库用户有足够权限读取数据,目标数据库用户有足够权限创建数据库、表和插入数据。
  3. 网络与磁盘空间:大规模数据迁移时,确保网络带宽充足(避免传输中断),目标服务器有足够的磁盘空间存储备份文件和恢复后的数据。
  4. 数据一致性:迁移过程中避免对源数据库进行写操作(可通过锁定表或停机迁移),确保数据一致性;若无法停机,可使用pg_dump--snapshot选项创建一致性快照。
  5. 测试验证:迁移完成后,在目标数据库中执行SELECT COUNT(*) FROM 关键表SELECT * FROM 关键表 LIMIT 10等查询,验证数据数量和内容是否与源数据库一致;同时测试应用程序是否能正常连接目标数据库。

0
看了该问题的人还看了