PostgreSQL® Versions-Upgrade von Version 13 auf Version 16

Wichtig: Es wird dringend empfohlen, vor der Aktualisierung der Version eine vollständige Sicherungskopie der Datenbank zu erstellen, damit versehentlich gelöschte Daten wiederhergestellt werden können.
Anmerkung: Sie können die Indizes der PostgreSQL®-Datenbank vor oder nach dem Upgrade von BRIN auf BTREE ändern. Siehe Kapitel PostgreSQL®-Schema. Beachten Sie, dass die Statistiken der Datenbank neu erstellt werden müssen. - siehe Schritt 8.
  1. Installieren Sie PostgreSQL® 16
  2. Richten Sie das PGDATA-Verzeichnis für PostgreSQL® 16 ein:
    1. Entscheiden Sie, welches Verzeichnis Sie als PGDATA-Verzeichnis für PostgreSQL® 16 verwenden wollen
    2. Löschen Sie den Inhalt des gewählten Verzeichnisses
    3. Vergewissern Sie sich, dass die Berechtigungen für dieses Verzeichnis korrekt eingestellt sind:
      1. Vergleichen Sie die Berechtigungen des Datenverzeichnisses von PostgreSQL® 16 mit dem der PostgreSQL® 13-Installation.
      2. Wenn Sie PG als Windows-Dienst laufen lassen wollen, stellen Sie sicher, dass Sie dem Benutzer NETWORK SERVICE volle Berechtigungen geben.
      3. Initialisieren Sie das gewählte PGDATA-Verzeichnis mit dem Befehl initdb aus der PostgreSQL® 16-Installation:

        Windows:
        "C:\Program Files\PostgreSQL\16\bin\initdb.exe" -D <new PGDATA directory for PostgreSQL® 16> -U postgres
        Linux:
        /usr/pgsql-16/bin/initdb -D <new PGDATA directory for PostgreSQL® 16> -U postgres
  3. Setzen Sie alle lokalen Adressen auf vertrauenswürdig in der Datei: C:\Program Files\PostgreSQL\16\data\pg_hba.confpg_hba.conf im alten PGDATA-Verzeichnis von PostgreSQL® 13
  4. Fahren Sie die PostgreSQL® 13-Datenbank herunter:
    1. Wenn Sie PostgreSQL® 13 als Windows-Dienst betreiben, dann beenden Sie einfach den Dienst postgresql-x64-13.
    2. Andernfalls verwenden Sie pg_ctl aus der PostgreSQL® 13-Installation:

      Windows:
      "C:\Program Files\PostgreSQL\13\bin\pg_ctl.exe" stop -D <old PGDATA directory for PostgreSQL® 13> -U postgres
      Linux:
       /usr/pgsql-13/bin/pg_ctl -D <old PGDATA directory for PostgreSQL® 13> stop
  5. Aktualisieren Sie Ihre PostgreSQL® 13-Datenbank auf PostgreSQL® 16 mit:
     pg_upgrade
    aus der PostgreSQL® 16-Installation:
    Windows:
    "C:\Program Files\PostgreSQL\16\bin\pg_upgrade.exe" -b "C:\Program Files\PostgreSQL\13\bin" -B "C:\Program Files\PostgreSQL\16\bin" -d <old PGDATA directory for PostgreSQL® 13> -D <new PGDATA directory for PostgreSQL® 16> -j 4 -k -p <port of PostgreSQL® 13 server> -P <port of PostgreSQL® 16 server> -U postgres 
    Linux:
    /usr/pgsql-16/bin/pg_upgrade -b /usr/pgsql-13/bin -B /usr/pgsql-16/bin -d <old PGDATA directory for PostgreSQL® 13> -D <new PGDATA directory for PostgreSQL® 16> -j 4 -k -p <port of PostgreSQL® 13 server> -P <port of PostgreSQL® 16 server> -U postgres
  6. Ändern Sie die
     pg_hba.conf 
    im neuen PGDATA-Verzeichnis von PostgreSQL® 16 entsprechend Ihren Bedürfnissen (z.B. kopieren vom alten PGDATA von PostgreSQL® 13 ).
  7. Starten Sie den neuen PostgreSQL® 16 Server:
    1. Wenn Sie es unter Windows als Dienst starten möchten, öffnen Sie Dienste und stellen Sie sicher, dass das Argument für den D-Switch des postgresql-x64-16 auf das richtige PGDATA-Verzeichnis neues PGDATA-Verzeichnis für PostgreSQL® 16> verweist und starten Sie den Dienst.
    2. Wenn Sie es manuell starten, verwenden Sie:
       pg_ctl:
      Windows:
      "C:\Program Files\PostgreSQL\16\bin\pg_ctl.exe" start -D <new PGDATA directory for PostgreSQL® 16> -w -U postgres
      Linux:
      /usr/pgsql-16/bin/pg_ctl -D <new PGDATA directory for PostgreSQL® 16> start
  8. Nach dem Start des Servers, schließen Sie das Versionsupgrade mit dem Aufruf des nachfolgenden Kommandos ab:
    • Windows:
      "C:\Program Files\PostgreSQL\16\bin\psql.exe" -U postgres -d winccoa -c "analyze;"
    • Linux:
      /usr/pgsql-16/bin/pg_ctl -U postgres -d winccoa -c "analyze;"