Skip to content

PostgreSQL 12 und pgAdmin 4 unter Ubuntu installieren oder aktualisieren

Nach gut einem Jahr wurde vor wenigen Tagen die Version 12 der Datenbanklösung PostgreSQL veröffentlicht.

Das Release steht im Zeichen der Performance und bietet beispielsweise mit REINDEX CONCURRENTLY nun eine Möglichkeit Indizes im laufenden Betrieb ohne Einbußen zu erneuern.

Weitere Änderungen sind im Changelog zu finden. Dort finden sich zusätzlich Anweisungen, welche für die ein oder andere Migration relevant sein dürften.

postgres_logo

PostgreSQL 12 unter Ubuntu installieren

Bei der Aktualisierung der vorhandenen Version hat sich nicht allzu viel getan. Der Vorgang ist analog zu Version 11.
 

sudo sh -c  'echo "deb http://apt.postgresql.org/pub/repos/apt/ bionic-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

sudo apt install postgresql-11

Nun kann überprüft werden, ob das System korrekt funktioniert. Dazu wird in die Postgres Console gewechselt.

sudo -u postgres psql

postgres=# \conninfo
You are connected to database "postgres" as user "postgres" via socket in "/var/run/postgresql" at port "5432".

postgresql12


PostgreSQL 11 auf PostgreSQL 12 aktualisieren

Nachdem die neueste Version installiert wurde, kann die alte im folgenden migriert werden.

Unbedingt eine Sicherung der vorhandenen Datenbanken machen.

pg_dumpall > /temp/sicherung

Noch einmal die Installationsinfos anzeigen lassen.

sudo pg_lsclusters

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

Sollte eine neue Version bereits installiert sein, muss diese zunächst gestoppt werden.

sudo pg_dropcluster 12 main --stop

Danach das alte Cluster migrieren.

sudo pg_upgradecluster 11 main

Sollte der Vorgang erfolgreich gewesen sein, kann das alte Cluster entfernt werden.

sudo pg_dropcluster 11 main


pgAdmin_4

pgAdmin 4 für PostgreSQL 12 installieren

Für viele bietet sich zur Verwaltung eine grafische Oberfläche an, hier kann der Quasistandard pgAdmin genutzt werden.

Das Tool hat sich in den letzten Jahren gut entwickelt und viele Kinderkrankheiten überwunden.

Das benötigte Repository ist durch die vorhergehende PostgreSQL Installation bereits vorhanden.

sudo apt install pgadmin4 pgadmin4-apache2

Das erste Paket installiert das Tool an sich, das zweite installiert das Webinterface dazu. Bei der Installation werden Mailadresse und Passwort abgefragt, dies wird später für den Login benötigt.

Die fertige Installation kann über den Browser aufgerufen werden.


http://localhost/pgadmin4/

 

PostgreSQL 11 - die Neuerungen, sowie Installation und Upgrade unter Ubuntu 18.04 LTS

Letzte Woche war es soweit, nach einen Jahr wurde PostgreSQL 11 veröffentlicht.

Die neue Version 11 hat im Vergleich zur letzten viele Änderungen erhalten. Neben Performance wurde auch an der Usability gearbeitet.

PostgreSQL 11 Neuerungen

Die vielleicht beste Neuerung für den Wald und Wiesen Datenbanknutzer betrifft die Postgres Konsole psql. Diese kann nun mit quit und exit verlassen werden, in Ergänzung zu \q oder Strg+D

postgres

Weitere Änderungen sind:

Die Parallelisierung wurde auf Hash Joins, Append, Index Erstellung, UNION-Abfragen und weitere Elemente erweitert.

JIT (Just in Time ) Kompilierung wurde integriert, was nach eigenen Aussagen 30% Geschwindigkeitszuwachs bringt . JIT muss manuell aktiviert werden.

Die Partitionierung wurde verbessert (z.B. hash partitioning) und PRIMARY KEY und FOREIGN KEY Anweisungen sind nun auch auf Partitionen möglich.

Neue Rollen wurden eingeführt (pg_read_server_files, pg_write_server_files, pg_execute_server_program).

Und ALTER TABLE beherrscht nun ADD COLUMN mit NOT NULL als Standardwert. 

 

Dies ist nur ein minimaler Auszug der neuen Features des aktuellen Releases. Daher verweise ich auf die Release Notes.

Nun zur Installation

Installation PostgreSQL 11 unter Ubuntu 18.04 LTS

sudo wget -O - http://apt.postgresql.org/pub/repos/apt/ACCC4CF8.asc | sudo apt-key add -
sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt/ bionic-pgdg main 11" >> /etc/apt/sources.list.d/postgresql-11.list'
sudo apt update
sudo apt install postgresql-11

The following additional packages will be installed:
  libllvm6.0 libpq5 libsensors4 pgdg-keyring postgresql-client-11 postgresql-client-common postgresql-common sysstat
Suggested packages:
  lm-sensors locales-all postgresql-doc-11 libjson-perl isag
The following NEW packages will be installed:
  libllvm6.0 libpq5 libsensors4 pgdg-keyring postgresql-11 postgresql-client-11 postgresql-client-common postgresql-common sysstat
0 upgraded, 9 newly installed, 0 to remove and 1 not upgraded.
Need to get 30.7 MB of archives.
After this operation, 115 MB of additional disk space will be used.
Do you want to continue? [Y/n] y

Upgrade auf PostgreSQL 11 von PostgreSQL 10

Bei einem Upgrade muss die neue Version (wie oben beschrieben) installiert werden. Danach kann überprüft werden, ob beide aktiv sind. Vorher aber das Backup nicht vergessen.

pg_dumpall > Sicherung
pg_lsclusters

Danach wird das neue Cluster vorerst angehalten damit das alte auf das neue migriert werden kann.

sudo pg_dropcluster 11 main --stop
sudo pg_upgradecluster 10 main

  Stopping old cluster...
  Disabling connections to the old cluster during upgrade...
  Restarting old cluster with restricted connections...
  Creating new PostgreSQL cluster 11/main ...
  /usr/lib/postgresql/11/bin/initdb -D /var/lib/postgresql/11/main --auth-local peer --auth-host md5 
  --encoding UTF8 --lc-collate en_US.UTF-8 --lc-ctype en_US.UTF-8
  The files belonging to this database system will be owned by user "postgres".
  This user must also own the server process.

  The database cluster will be initialized with locale "en_US.UTF-8".
  The default text search configuration will be set to "english".

  Data page checksums are disabled.

  fixing permissions on existing directory /var/lib/postgresql/11/main ... ok
  creating subdirectories ... ok
  selecting default max_connections ... 100
  selecting default shared_buffers ... 128MB
  selecting dynamic shared memory implementation ... posix
  creating configuration files ... ok
  running bootstrap script ... ok
  performing post-bootstrap initialization ... ok
  syncing data to disk ... ok

pg_lscluster

Im nächsten Schritt kann die korrekte Funktion des Systems und der Datenbanken überprüft werden.

Ist alles in Ordnung kann das alte Cluster entfernt werden.

sudo pg_dropcluster 10 main

 

Zypper ps für Ubuntu - Mit Checkrestart laufenden Prozesse nach Updates ausfindig machen

Eine beliebte Funktion unter OpenSuse Systemen ist der Befehl "zypper" mit dem Zusatz "ps".

Dieser listet, zum Beispiel nach frisch installierten Updates auf, welche Prozesse noch in Verwendung sind und neu gestartet werden müssen, damit die gerade vollzogene Aktualisierung greift.

Ubuntu bringt bei der Standardinstallation in der Paketverwaltung apt-get leider keine Überprüfung laufender Prozesse nach einem Update mit. Hier muss zu ein paar Debian Tools gegriffen werden.

Checkrestart - Aktualisierte Prozesse unter Ubuntu prüfen

Debian-Goodies heißt das Paket, welches unter Ubuntu praktische Kommandozeilen Tools wie "checkrestart" oder "dpigs" mitbringt.

Ersteres zeigt, wie schon erwähnt, laufenden Prozesse nach einem Update an, zweiteres die installierten Pakete mit dem größten Platzbedarf.

Die Installation und Anwendung ist denkbar einfach.

sudo apt-get install debian-goodies

sudo checkrestart

Found 10 processes using old versions of upgraded files

(5 distinct programs)

(5 distinct packages)

Of these, 5 seem to contain init scripts which can be used to restart them:

The following packages seem to have init scripts that could be used

to restart them:

openssh-server:

        55555   /usr/sbin/sshd

        53555   /usr/sbin/sshd

        838     /usr/sbin/sshd

postfix:

        2383    /usr/lib/postfix/tlsmgr

        53353   /usr/lib/postfix/smtp

apache2.2-bin:

        2343    /usr/lib/apache2/apache2

These are the init scripts:

/etc/init.d/ssh restart

/etc/init.d/postfix restart

/etc/init.d/whoopsie restart

/etc/init.d/apache2 restart

Oben ist die Ausgabe bei anstehenden Neustarts von Prozessen zu sehen. Praktischerweise wird die Vorgehensweise für die einzelnen Anwendungen mit ausgegeben.

Sollten keine Prozesse betroffen sein, wird "Found 0 processes using old versions of upgraded files" angezeigt.