Question: How do you update a PostgreSQL cluster?


Updating a PostgreSQL cluster involves several key steps to ensure that the database system remains stable and efficient after the update. The process typically depends on whether you are updating PostgreSQL within the same major version (minor update) or upgrading to a new major version. Here’s how you can manage both:

Minor Version Update

For minor updates, which usually include bug fixes and minor feature enhancements without breaking changes, the process is relatively straightforward:

  1. Ensure backups are up-to-date: Always back up your data before performing any updates. You can use pg_dump for logical backups or file system level tools for physical backups.

  2. Stop the PostgreSQL service: To perform the update safely, stop the PostgreSQL server.

    sudo systemctl stop postgresql
  3. Update PostgreSQL: Use your system's package manager to update the PostgreSQL packages.

    sudo apt-get update && sudo apt-get upgrade postgresql
  4. Start the PostgreSQL service: Once the update is complete, start the server again.

    sudo systemctl start postgresql
  5. Check the logs: Verify that there are no unexpected errors in the PostgreSQL logs.

Major Version Upgrade

Upgrading to a new major version is more complex due to changes in internal features, SQL commands, and functionalities. Use the pg_upgrade tool provided by PostgreSQL.

  1. Install the new PostgreSQL version: Install the new version alongside the old version without removing it.

    sudo apt-get install postgresql-12
  2. Prepare for the upgrade:

    • Ensure both old and new versions of PostgreSQL are correctly installed.
    • Stop both servers if they are running.
    • Check configuration differences and adjust the new version accordingly.
  3. Perform the upgrade using pg_upgrade: This tool will help you migrate data files, configurations, and databases from the old server to the new one.

    sudo -u postgres pg_upgrade \\ -b /usr/lib/postgresql/11/bin \\ -B /usr/lib/postgresql/12/bin \\ -d /var/lib/postgresql/11/data \\ -D /var/lib/postgresql/12/data \\ -o '-c config_file=/etc/postgresql/11/main/postgresql.conf' \\ -O '-c config_file=/etc/postgresql/12/main/postgresql.conf'
  4. Restart the new PostgreSQL service and check the logs for any errors.

  5. Optional: Once confirmed everything works fine, you can remove the old PostgreSQL version.

Always refer to the specific PostgreSQL migration guide related to your current and target versions for detailed instructions and best practices.

Was this content helpful?

White Paper

Free System Design on AWS E-Book

Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.

Free System Design on AWS E-Book
Start building today

Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement.