PostgreSQL 13.9与pg_dump 12.12版本不匹配,求解决备份问题
解决PostgreSQL pg_dump版本不匹配问题
遇到pg_dump版本低于PostgreSQL服务器版本导致的备份失败,直接用以下几种方案解决:
方案1:安装与服务器同版本的pg_dump(推荐)
你的服务器版本是13.9,所以需要安装PostgreSQL 13系列的pg_dump工具:
- 先给Ubuntu系统添加PostgreSQL官方软件源:
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list' wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add - sudo apt update - 安装PostgreSQL 13的客户端工具包(包含pg_dump):
sudo apt install postgresql-client-13 - 安装完成后直接执行原备份命令即可,系统会优先调用新版本工具;如果仍默认旧版本,就指定全路径执行:
/usr/lib/postgresql/13/bin/pg_dump -Fc -h localhost -U postgres -d <db-name> -f <filename>
方案2:直接使用服务器本机的pg_dump(本地备份场景)
如果是在数据库服务器本机执行备份,系统里肯定自带对应13.9版本的pg_dump,找到它的默认路径(通常是/usr/lib/postgresql/13/bin/),直接用全路径执行命令:
/usr/lib/postgresql/13/bin/pg_dump -Fc -h localhost -U postgres -d <db-name> -f <filename>
方案3:远程备份时通过SSH调用服务器端pg_dump
如果是远程备份,不用在本地装新版本工具,直接通过SSH连接到服务器执行pg_dump,把备份文件同步到本地:
ssh postgres@你的服务器IP "/usr/lib/postgresql/13/bin/pg_dump -Fc -d <db-name>" > <本地保存的文件名>
核心原因说明
PostgreSQL的pg_dump工具要求版本不能低于服务器版本,低版本工具无法识别高版本服务器的新特性,因此必须使用与服务器同版本或更高版本的pg_dump完成备份。
内容的提问来源于stack exchange,提问作者G_developer
相关产品推荐
相关产品推荐

