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

如何在K8s Pod中用pg_dump生成目录格式的Postgres数据库备份

解决Kubernetes Pod中pg_dump目录格式备份的问题

错误原因

你遇到的pg_dump: [directory archiver] no output directory specified错误,是因为使用--format=d(目录格式)时,pg_dump不能通过标准输出(即>重定向)生成备份——目录格式会生成多个关联文件(如目录索引、分片数据文件等),必须明确指定Pod内的一个目录路径作为输出目标。

解决方案步骤

要完成目录格式的备份,需要先在Pod内生成完整的备份目录,再将该目录拷贝到本地:

  1. 在Pod内执行pg_dump生成目录备份
    先在Pod中创建临时目录(避免权限或目录不存在问题),然后指定-f参数输出到该目录:

    kubectl exec patroni-0 -- bash -c "mkdir -p /tmp/db_backup && pg_dump -U username db_name --format=d -f /tmp/db_backup"
    
    • mkdir -p /tmp/db_backup:确保Pod内的临时目录存在
    • -f /tmp/db_backup:指定pg_dump的输出目录(必须配合--format=d使用)
  2. 将Pod内的备份目录拷贝到本地
    使用kubectl cp命令把Pod中的备份目录同步到本地机器:

    kubectl cp patroni-0:/tmp/db_backup ./db_dump_folder
    

    执行后,本地当前目录下会生成db_dump_folder目录,包含完整的备份文件。

  3. (可选)清理Pod内的临时备份目录
    备份完成后,可删除Pod内的临时文件释放空间:

    kubectl exec patroni-0 -- rm -rf /tmp/db_backup
    

注意事项

  • 确保Pod内的Postgres用户(username)有足够权限读取目标数据库,且临时目录(/tmp/db_backup)有写入权限
  • 如果Pod使用了非默认的Postgres端口,需添加-p <端口号>参数到pg_dump命令中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 01:28:15