pg_basebackup与Postgres.app 16.3版本不兼容导致备份失败求助
遇到这个问题很常见,本质是pg_basebackup的版本必须和PostgreSQL服务器完全匹配——哪怕是小版本的差异,都可能触发这类兼容性错误。结合你的环境(macOS Sonoma + Postgres.app 16.3),我整理了几个可行的解决步骤:
先确认当前调用的
pg_basebackup版本:在终端运行pg_basebackup --version,看看输出的版本是不是16.3且带有Postgres.app标识。如果不是,说明你系统里存在其他版本的PostgreSQL工具,脚本优先调用了旧版本的pg_basebackup。直接使用Postgres.app自带的
pg_basebackup:Postgres.app的工具都存放在它的安装目录下,默认路径是/Applications/Postgres.app/Contents/Versions/16/bin/pg_basebackup。你可以修改备份脚本,把原来的pg_basebackup命令替换成这个绝对路径,确保调用的是和服务器版本一致的工具。调整环境变量(可选,更方便长期使用):如果不想每次都写长路径,可以在脚本开头添加环境变量配置,把Postgres.app的bin目录放到PATH最前面,让系统优先使用它的工具:
export PATH="/Applications/Postgres.app/Contents/Versions/16/bin:$PATH"这样后续脚本里调用
pg_basebackup时,就会自动用Postgres.app自带的16.3版本了。验证修改效果:调整完脚本后,先手动运行一次备份命令,确认不再弹出版本不兼容的错误,再放回定时任务里。
另外提醒下:如果之后升级Postgres.app的版本,记得同步更新脚本里的路径或者PATH里的版本号(比如从16改成17),避免再次出现版本不匹配的问题。
备注:内容来源于stack exchange,提问作者QGuy

