Managing Multiple PostgreSQL Versions on Ubuntu Linux: A Guide to Using pg_dump with Different Server Versions

0saves

Are you struggling with a version mismatch between your PostgreSQL server and the `pg_dump` utility on Ubuntu? You’re not alone. Many developers face this common issue, particularly when working with multiple projects that require different PostgreSQL versions. In this post, we’ll guide you through the steps to install and manage multiple versions of `pg_dump` on Ubuntu 22.04, ensuring compatibility and efficiency in your workflow.

Understanding the Issue

The error message `pg_dump: error: server version: XX; pg_dump version: YY` indicates a version mismatch. This often happens when your local system’s `pg_dump` utility version does not match the version of the PostgreSQL server you’re trying to interact with.

The Solution: Installing Multiple Versions of PostgreSQL

Thankfully, Ubuntu allows the installation of multiple PostgreSQL versions simultaneously. Here’s how you can do it:

  1. Add the PostgreSQL Repository:
    Begin by adding the PostgreSQL Global Development Group (PGDG) repository to your system. This repository provides the latest PostgreSQL versions.

       sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
    
  2. Import Repository Signing Key & Update Packages:
    Ensure the authenticity of the repository by importing its signing key. Then, update your package lists.

       wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
       sudo apt-get update
    
  3. Install the Desired PostgreSQL Version:
    Install PostgreSQL 15.5 (or your required version) without affecting existing installations.

       sudo apt-get install postgresql-15
    

Setting Up Alternatives for pg_dump

With multiple PostgreSQL versions installed, use the `update-alternatives` system to manage different `pg_dump` versions.

  1. Configure Alternatives:
    Set up `pg_dump` alternatives for each PostgreSQL version installed on your system.

       sudo update-alternatives --install /usr/bin/pg_dump pg_dump /usr/lib/postgresql/14/bin/pg_dump 100
       sudo update-alternatives --install /usr/bin/pg_dump pg_dump /usr/lib/postgresql/15/bin/pg_dump 150
    
  2. Switch Between Versions:
    Easily switch between `pg_dump` versions as per your project requirements.

    sudo update-alternatives --config pg_dump
    

Verifying the Setup

After configuration, ensure that you’re using the correct `pg_dump` version by checking its version. This step confirms that you have successfully set up multiple PostgreSQL versions on your system.

pg_dump --version

Conclusion

Managing different PostgreSQL versions doesn’t have to be a hassle. By following these steps, you can maintain an efficient and flexible development environment, compatible with various PostgreSQL server versions. This setup is particularly useful for developers working on multiple projects with different database requirements.