Postgres目录格式备份报错及选择性恢复等相关技术问题咨询
Postgres备份问题解答
1. 如何创建可选择性恢复表的备份格式?
有两种实用方案,可根据需求选择:
方案一:精准备份指定表
直接用pg_dump的-t参数指定需要备份的表(支持重复-t添加多个表),目录格式或自定义格式均适用。示例命令:# 目录格式备份指定表 pg_dump -Fdirectory -f sba_table_backup -t public.table1 -t sales.order sba # 自定义单文件格式备份指定表 pg_dump -Fc -f sba_table_backup.dump -t public.table1 -t sales.order sba恢复时只需用
pg_restore指定对应表即可完成选择性恢复。方案二:全库备份保留单表恢复能力
如果需要全库备份同时支持单表级恢复,优先选择自定义格式(-Fc)或目录格式(-Fdirectory):- 自定义格式:生成单一压缩文件,便于存储和传输,恢复时通过
-t指定目标表:# 创建自定义格式全库备份 pg_dump -Fc -f sba_full_backup.dump --jobs=32 --verbose sba # 选择性恢复指定表 pg_restore -d sba_restore -t public.table1 sba_full_backup.dump - 目录格式:生成包含多文件的目录,每张表对应独立的数据文件,恢复时同样用
-t指定表:# 恢复目录格式备份中的指定表 pg_restore -d sba_restore -t public.table1 sba_backup_dir
- 自定义格式:生成单一压缩文件,便于存储和传输,恢复时通过
2. 此次备份是否成功?报错仅为提示信息吗?
此次备份未成功,该报错是终止备份流程的错误,并非提示信息:
- 报错根源:你使用Windows系统的Postgres 15版本
pg_dump备份WSL中Debian的Postgres 12实例,跨WSL与Windows NTFS文件系统交互时,处理6.2GB大文件触发了stat系统调用失败("value too large"),这多是跨环境工具兼容性问题或WSL文件系统交互限制导致的。 - 备份状态:
pg_dump遇到该错误后会中断执行,生成的sba目录是不完整的,其中282168.data.gz文件大概率未正确写入或无法被工具验证完整性,这样的备份不能用于可靠恢复。
内容的提问来源于stack exchange,提问作者Andrus
相关产品推荐
相关产品推荐

