• Home
  • Blog

Archieven

  • april 2025
  • oktober 2024
  • september 2024
  • september 2023
  • maart 2022
  • maart 2021
  • september 2020
  • september 2019
  • februari 2019
  • september 2018
  • september 2016
  • september 2015
Davici
  • Home
  • Blog

How to switch the active PostgreSQL cluster

A how to of switching the active PostgreSQL cluster version to make it bind to port 5432.

Let’s define the active PostgreSQL cluster as the one that binds to port 5432 and having multiple versions running in Ubuntu.

Check with pg_lscluster what is running:

$ sudo pg_lsclusters
Ver Cluster Port Status Owner    Data directory               Log file
9.5 main    5433 online postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
11  main    5432 online postgres /var/lib/postgresql/11/main  /var/log/postgresql/postgresql-11-main.log

And what is the active PostgreSQL version for command line commands, for example pg_dump.

$ pg_dump --version
pg_dump (PostgreSQL) 11.5 (Ubuntu 11.5-1.pgdg16.04+1)

We want to switch and make 9.5 version active (binding to port 5432) and make version 11 bind to port 5433. Stop the running versions and check if the servers are down.

$ sudo pg_ctlcluster 9.5 main stop
$ sudo pg_ctlcluster 11 main stop
$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory               Log file
9.5 main    5433 down   postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
11  main    5432 down   postgres /var/lib/postgresql/11/main  /var/log/postgresql/postgresql-11-main.log

Change the port in the configuration files and list the new config to be sure.

$ sudo mcedit /etc/postgresql/9.5/main/postgresql.conf
change port=5433 to port=5432 
$ sudo mcedit /etc/postgresql/11/main/postgresql.conf
change port=5432 to port 5433

$ grep -H '^port' /etc/postgresql/*/main/postgresql.conf
/etc/postgresql/9.5/main/postgresql.conf:port = 5432
/etc/postgresql/11/main/postgresql.conf:port = 5433

Start the clusters and check what is running

$ sudo pg_ctlcluster 9.5 main start
$ sudo pg_ctlcluster 11 main start

$ pg_lsclusters
Ver Cluster Port Status Owner    Data directory               Log file
9.5 main    5432 online postgres /var/lib/postgresql/9.5/main /var/log/postgresql/postgresql-9.5-main.log
11  main    5433 online postgres /var/lib/postgresql/11/main  /var/log/postgresql/postgresql-11-main.log

Mission accomplished! Let’s see what is the active PostgreSQL version for command line commands.

$ pg_dump --version
pg_dump (PostgreSQL) 9.5.19

How does this work that the PostgreSQL command line commands automatically adapts to the active version. Because /usr/bin/pg_dump is a symlink to pg_wrapper. And pg_wrapper checks which version is running on port 5432 (or environment variables) to find out what the active version is.

$ ls -al /usr/bin/pg_dump
/usr/bin/pg_dump -> ../share/postgresql-common/pg_wrapper

Tags

.NET Azure C# CTO Database DevOps Docker EDI Git HA IT developement director Microservices PostgreSQL Softwareontwikkeling Visual Studio Windows

Recent Posts

  • Technical Debt: een strategische aanpak voor duurzame softwareontwikkeling

  • How to set timezone in a Docker Windows Container

  • How to install fonts in a Docker Windows Container

  • Why WebView2 Applications Face Issues in the Program Files Folder (And How to Fix Them)

  • ClickOnce signing from Azure DevOps via Azure Key Vault

Tags: Database,HA,PostgreSQL

Contact

Breda, Noord-Brabant, Nederland
info@davici.nl
K.v.K. 20099979
Twitter
LinkedIn

OVERIGE

  • Algemene Voorwaarden
  • Privacybeleid
  • Cookiebeleid

Copyright © 2025 — Davici. Alle rechten voorbehouden.

Designed by WPZOOM

Beheer toestemming
Om de beste ervaringen te bieden, gebruiken wij technologieën zoals cookies om informatie over je apparaat op te slaan en/of te raadplegen. Door in te stemmen met deze technologieën kunnen wij gegevens zoals surfgedrag of unieke ID's op deze site verwerken. Als je geen toestemming geeft of uw toestemming intrekt, kan dit een nadelige invloed hebben op bepaalde functies en mogelijkheden.
Functioneel Altijd actief
De technische opslag of toegang is strikt noodzakelijk voor het legitieme doel het gebruik mogelijk te maken van een specifieke dienst waarom de abonnee of gebruiker uitdrukkelijk heeft gevraagd, of met als enig doel de uitvoering van de transmissie van een communicatie over een elektronisch communicatienetwerk.
Voorkeuren
De technische opslag of toegang is noodzakelijk voor het legitieme doel voorkeuren op te slaan die niet door de abonnee of gebruiker zijn aangevraagd.
Statistieken
De technische opslag of toegang die uitsluitend voor statistische doeleinden wordt gebruikt. De technische opslag of toegang die uitsluitend wordt gebruikt voor anonieme statistische doeleinden. Zonder dagvaarding, vrijwillige naleving door je Internet Service Provider, of aanvullende gegevens van een derde partij, kan informatie die alleen voor dit doel wordt opgeslagen of opgehaald gewoonlijk niet worden gebruikt om je te identificeren.
Marketing
De technische opslag of toegang is nodig om gebruikersprofielen op te stellen voor het verzenden van reclame, of om de gebruiker op een site of over verschillende sites te volgen voor soortgelijke marketingdoeleinden.
Beheer opties Beheer diensten Beheer {vendor_count} leveranciers Lees meer over deze doeleinden
Bekijk voorkeuren
{title} {title} {title}