1. 准备工作
在开始迁移前,需完成以下关键任务:
- 安装PgAdmin:在Debian系统上,通过终端执行
sudo apt update && sudo apt install pgadmin4安装PgAdmin 4(推荐最新稳定版)。安装完成后,通过浏览器访问http://localhost/pgadmin4登录(使用初始管理员账户如pgadmin4@pgadmin.org或自定义账户)。
- 备份源数据库:迁移前务必对源数据库进行完整备份,可使用PgAdmin的“备份”功能(右键源数据库→“备份”),选择备份格式(如SQL),保存到本地或远程存储,防止迁移过程中数据丢失。
- 确认兼容性:确保目标Debian服务器上的PostgreSQL版本与源服务器版本兼容(无重大版本跨越,如12→15通常没问题),避免因版本差异导致表结构、函数或数据类型不兼容。
- 权限准备:用于连接数据库的用户需具备导出(SELECT、READ)和导入(INSERT、CREATE)权限,若迁移表结构还需ALTER、DROP权限(建议使用数据库管理员账户,如
postgres)。
2. 从源数据库导出数据
- 连接源数据库:在PgAdmin左侧“服务器”面板中,右键点击“服务器”→“创建”→“服务器…”,输入源数据库连接信息(主机名/IP、端口,默认5432、用户名、密码),点击“保存”后展开服务器节点。
- 选择导出对象:展开源服务器→“数据库”,选择要迁移的数据库(如
mydb);可根据需求选择整个数据库(包含所有表、视图、函数等)或单个表(如mytable)。
- 执行导出操作:
- 导出整个数据库:右键选中数据库→“任务”→“导出”(或“Tools”→“Export”),打开导出窗口;
- 导出单个表:右键选中表→“导出数据…”(或“Export Data…”)。
在导出窗口中,配置以下选项:
- 格式:优先选择SQL(保留表结构、索引、约束等完整信息,适合完整数据库迁移);若仅需迁移数据,可选择CSV(适合表格数据导入其他工具);
- 路径:指定导出文件的保存位置(如本地
/home/user/mydb_export.sql或远程路径,需确保PgAdmin有写入权限);
- 选项:勾选“导出结构”(表、视图、函数等)、“导出数据”(表记录)、“导出权限”(可选,保留用户权限);若导出CSV,需设置“字段分隔符”(默认逗号,)、“文本限定符”(默认双引号")。
- 完成导出:点击“开始”按钮,等待导出进度完成。导出成功后,会在指定路径生成
.sql(或.csv)文件。
3. 将数据导入目标数据库
- 连接目标数据库:在PgAdmin左侧“服务器”面板中,添加目标服务器连接(步骤同“连接源数据库”),确保目标数据库已创建(可通过PgAdmin右键“数据库”→“创建”→“数据库”提前创建,如
mydb_target)。
- 选择导入目标:展开目标服务器→“数据库”→选中目标数据库(如
mydb_target);可选择整个数据库(导入所有表结构及数据)或单个表(导入指定表数据)。
- 执行导入操作:
- 导入整个数据库:右键选中目标数据库→“任务”→“导入”(或“Tools”→“Import”),打开导入窗口;
- 导入单个表:右键选中目标表→“导入/导出数据…”(或“Import/Export Data…”)。
在导入窗口中,配置以下选项:
- 文件:点击“选择文件”按钮,浏览并选中之前导出的
.sql(或.csv)文件;
- 格式:与导出时的格式保持一致(如SQL→SQL、CSV→CSV);
- 选项:勾选“覆盖现有数据”(若目标表已存在,替换原有数据;谨慎使用)、“保留现有数据”(仅追加新数据,避免覆盖);若导入CSV,需设置与导出时一致的“字段分隔符”“文本限定符”。
- 完成导入:点击“开始”按钮,等待导入进度完成。导入成功后,可在目标数据库中刷新“表”节点,查看导入的表及数据。
4. 验证数据完整性
5. 常见问题解决
- 权限不足:若导入时提示“permission denied”,需检查目标数据库用户的权限(如是否具备CREATE、INSERT权限),可通过PgAdmin右键用户→“属性”→“权限”调整。
- 版本不兼容:若导入时出现“语法错误”或“函数不存在”,可能是版本差异导致(如PostgreSQL 14与15的某些函数变化),需调整导出/导入的SQL文件(如修改函数调用、调整语法)。
- 大文件导入慢:若导入的SQL文件较大(如超过1GB),可分批次导入(如拆分表),或在目标服务器上调整PostgreSQL配置(如增大
work_mem、maintenance_work_mem参数),提高导入速度。