How to fix pg_dump: aborting because of server version mismatch - postgresql

My codebase and database is hosted on different servers with Ubuntu 12.04.
database => web1
codebase => web2
I am trying to take my database backup (web1) through the application(web2).
Now the problem is I have different versions of postgres installed on web1 and web2.
pg_dump: server version: 9.3.12 (web1)
pg_dump version: 9.1.23 (web2)
Is there any way I can resolve this issue without upgrading any package because there are multiple applications hosted and relying on these versions.
Thanks for helping!

pg_dump will refuse to connect to a server with a later version than itself for the good reason that it cannot guarantee that it will work.
Downgrading a database from 9.3 to 9.1 is definitely not supported, particularly since version 9.1 is out of support.
You'll have to use pg_dump from the 9.3 installation to dump the database, then you can try to load the result into the 9.1 database. Watch out for errors during restore and test well!

If you are using a SQL Client like Dbeaver and have more than one version of Postgres, remember to change the client version in the option. I was getting this error while using the Dbeaver's backup tool.

Related

AWS RDS PostgreSQL Upgrade from 9.6.22 to 10.17

Good day. I just finished upgrading my AWS RDS database engine from 9.6.22 to 10.17. I used these steps to make the upgrade using the AWS Console:
Create snapshot of target database to upgrade
Restore snapshot
Upgrade the restored snapshot's (which is now a new instance) DB Engine version.
After I did all of this, everything seems fine but when I access the database, this warning message appears
WARNING: psql major version 9.6, server major version 10.
Some psql features might not work.
I did not continue on my testing because I want to know what is the meaning of this first. Because I am fairly new in AWS as a whole. Thanks!
The meaning is that just because you are connecting to an upgraded database on some machine run by Amazon, the PostgreSQL installation on your local machine was not magically updated. psql from version 9.6 doesn't know what metadata tables were changed in v10, what features were removed and so on.
It would be a good idea to install a more recent version of PostgreSQL on your machine. By the way, upgrading to v10 was not the smartest move, as that version will go out of support in less than a year. You should upgrade to the latest version that your service provider offers.
The client program psql you are using to connect to the database is from an older version than the database it is connecting to. Some of the introspection features might not work. For example, psql from 9.6 won't know how to do tab completion for commands that were added to the server after 9.6.
This is generally not a major problem for psql (unless the server wants to use SCRAM authentication), but for optimal experience it would be good to install a newer client. Other tools like pg_dimp might not with at all against a server newer than they are.

rds is running on postgres 9.6.6 while yum update will cause an update of the installed version to 9.6.8

RDS is running on postgres version of 9.6 while my installed version is 9.3.2 and an yum update changes the postgres version to 9.6.8 while my RDS is running on 9.6.6 . Does this version mismatch is bad or should I Upgrade my server RDS from 9.6.6 to 9.6.8
I've done exactly this and it works fine. As you're updating just the client and the client is backwards compatible (especially at such a minor revision level), it should not hurt. A good rule of thumb is to always do regression testing to make sure, and have a way to roll back. There is no rule that says client and server versions have to be identical, however.

Can you upgrade Postresql-server directly from 9.2 to 9.6?

Can you upgrade Postresql-server directly from 9.2 to 9.6? (Running on RHEL 7)
yes:
https://www.postgresql.org/docs/9.6/static/pgupgrade.html
pg_upgrade supports upgrades from 8.4.X and later to the current major
release of PostgreSQL, including snapshot and alpha releases.
https://www.postgresql.org/docs/9.6/static/app-pgdump.html
Because pg_dump is used to transfer data to newer versions of
PostgreSQL, the output of pg_dump can be expected to load into
PostgreSQL server versions newer than pg_dump's version. pg_dump can
also dump from PostgreSQL servers older than its own version.
(Currently, servers back to version 7.0 are supported.) However,
pg_dump cannot dump from PostgreSQL servers newer than its own major
version; it will refuse to even try, rather than risk making an
invalid dump.
ephasis mine

server version mismatch postgresql pg_dump

I'm getting the following error when I'm trying to export my database...
pg_dump: server version: 9.3.1; pg_dump version: 9.1.11
pg_dump: aborting because of server version mismatch
The problem is I cannot update from 9.1.11 to 9.3.1 because of my ubuntu version on my client machine. I'm running Ubuntu 13.04 raring ringtail and as you can see in this distributions link the ultimate postgresql version for ubuntu is 12.04 precise pangolin.
Any possible solution? Thanks in advance!
As previously commented the solution is to use a pg_dump compatible with the server version. The alternatives are:
Run pg_dump from the server. This means you have to have a local or remote connection to server (via ssh for example)
Install later version of pg_dump. Note that even pgAdmin includes pg_dump so you don't necessarily have to install PostgreSQL package on the client.

Migrating Postgresql 9.1 to 9.2 from an old server to a new server

In my old server, Postgresql 9.1 is installed and it contains a large scale of data. Now, I have got a new server and installed the latest version of Postgresql which is 9.2. I want to migrate the whole data from the old server to the new server. I looked at Postgresql documentation and there is a command to upgrade but it seems to explain upgrading in the same server. How could I approach for this matter?
I would be very careful about changing both hardware and major versions of PostgreSQL at the same time. If something goes wrong, it will greatly complicate figuring out what the problem is.
I do this as a two step process, first restore the database to the new server as the same version, then run pg_upgrade. That means you have to have both versions of the software installed on the new server simultaneously.
Dump the database with pg_dump and load it at the new server with psql. I think pg_upgrade is better as an in place procedure.