You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

除pg_dump外,仅知PostgreSQL连接信息时如何备份数据库?

除pg_dump外的PostgreSQL远程备份方法

首先纠正一个常见误解:pg_dump并非必须在PostgreSQL服务器端运行,你可以在本地安装PostgreSQL客户端工具包(包含pg_dump),通过手头的连接信息(主机地址、端口、用户名、密码)直接远程连接服务器执行备份,这是最常用的远程备份方式。

如果确实需要pg_dump之外的替代方案,以下几种方法适用于仅拥有连接信息的场景:

1. pg_dumpall

  • 这是PostgreSQL官方提供的集群级备份工具,可备份整个PostgreSQL实例的所有数据库、角色、表空间、配置参数等全量对象。
  • 远程使用方式(本地需安装客户端):
    pg_dumpall -h <主机地址> -p <端口> -U <用户名> -f <本地备份文件路径>
    
    执行时会提示输入密码,也可通过PGPASSWORD环境变量预先设置以避免交互。
  • 优势:一次性覆盖所有你需要的对象(表、序列、函数等),无需单独处理各类对象的备份逻辑。

2. 可视化数据库工具导出

多款通用或PostgreSQL专用可视化工具支持远程连接后导出完整备份:

  • pgAdmin:PostgreSQL官方管理工具,连接数据库后右键点击目标库,选择「备份」,在选项中勾选「包含所有对象」,即可生成包含表、序列、函数等的备份文件。
  • DBeaver:通用数据库客户端,连接后右键目标库选择「导出数据」,选择导出格式(如SQL脚本、CSV),并在设置中勾选需要备份的对象类型(函数、序列、视图等)。
  • 这类工具无需手动编写命令,界面操作直观,适合不熟悉命令行的用户。

3. psql结合系统函数+COPY命令手动导出

若需要更灵活的备份控制,可通过psql远程连接,结合PostgreSQL系统函数导出对象结构,再用\copy导出数据:

  • 导出对象结构:利用系统函数获取各类对象的DDL语句,示例:
    -- 导出public schema下所有表的DDL
    SELECT pg_get_tabledef(tablename) FROM pg_tables WHERE schemaname = 'public';
    -- 导出public schema下所有函数的DDL
    SELECT pg_get_functiondef(oid) FROM pg_proc WHERE schemaname = 'public';
    -- 导出public schema下所有序列的DDL
    SELECT pg_get_sequence_def(seqname) FROM pg_sequences WHERE schemaname = 'public';
    
    将查询结果保存为SQL文件,即可得到对象的结构定义。
  • 导出数据:使用psql的\copy命令(区别于服务器端COPY)将表数据导出到本地:
    psql -h <主机地址> -p <端口> -U <用户名> -d <数据库名> -c "\copy public.your_table TO '/本地路径/table_data.csv' WITH CSV HEADER"
    
  • 优势:完全自定义备份内容,适合仅需备份部分对象的场景;劣势:需手动编写脚本处理各类对象,复杂度较高。

4. 第三方逻辑备份工具

部分第三方工具支持远程PostgreSQL备份,无需服务器端部署:

  • 并行备份工具:如pg_dump_parallel(基于pg_dump扩展),支持远程连接并并行导出数据,可提升大数据库的备份速度。
  • 社区开源脚本:一些基于Python/Shell的备份脚本,通过PostgreSQL驱动或psql远程连接,自动批量导出结构和数据,可根据需求修改脚本逻辑。

内容的提问来源于stack exchange,提问作者Ten Locks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 06:05:08