datenbank:postgresql_upgrade
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| datenbank:postgresql_upgrade [2024-02-12 12:56:15] – [Stand-Alone-Installation] manfred | datenbank:postgresql_upgrade [2025-08-09 21:30:52] (aktuell) – [So geht es auch] manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== PostgreSQL Upgrade ====== | ||
| + | |||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
| + | * **[[https:// | ||
| + | |||
| + | |||
| + | ===== Upgrade auf PostgreSQL 14 ===== | ||
| + | |||
| + | [[https:// | ||
| + | |||
| + | Beim Upgrade auf PostgreSQL 14 gibt es noch einen weiteren Punkt zu beachten: Hier ändert sich das Authentifizierungs-Verfahren von md5 auf scram-sha-256. Dabei handelt es sich um Hashing-Verfahren von Passwörtern. Weitere Informationen dazu sind in der PostgreSQL-Dokumentation zu finden. | ||
| + | |||
| + | Nach einem Update von PostgreSQL 13 auf Version 14 werden die Anwendungen zunächst einmal keine Verbindung mehr zur Datenbank aufbauen können, da sich das Hashing-Verfahren geändert hat. In diesem Fall müssen die Passwörter aller PostgreSQL-Benutzer neu gesetzt werden. | ||
| + | |||
| + | Zunächst einmal kann man sich alle Datenbank-Benutzer auflisten lassen: | ||
| + | > echo " | ||
| + | |||
| + | So wird das Passwort eines Datenbank-Users neu gesetzt //(neu setzen, nicht ändern)//: | ||
| + | > echo " | ||
| + | |||
| + | **Hinweis: | ||
| + | |||
| + | Anschließend sollte der Datenbank-Zugriff wieder wie gewohnt funktionieren. | ||
| + | |||
| + | |||
| + | ===== Stand-Alone-Installation ===== | ||
| + | |||
| + | |||
| + | ==== komplett neu machen ==== | ||
| + | |||
| + | Dump erstellen: | ||
| + | > pg_dumpall -E UTF8 -U postgres --if-exists --inserts -c > dump_data+schema.sql | ||
| + | > pg_dumpall -E UTF8 -U postgres --inserts -a > dump_data.sql | ||
| + | > pg_dumpall -E UTF8 -U postgres -s > dump_schema.sql | ||
| + | |||
| + | DB komplett löschen und neu machen | ||
| + | > service postgresql stop | ||
| + | > rm -fr / | ||
| + | > su - postgres -c " | ||
| + | > service postgresql status | ||
| + | > service postgresql start | ||
| + | > echo -e " | ||
| + | |||
| + | Benutzer anlegen: | ||
| + | > createuser -U postgres --no-superuser --no-createdb --no-createrole MEINUSER | ||
| + | |||
| + | Datenbank für den neuen Benutzer anlegen: | ||
| + | > createdb -E UTF8 --locale=de_DE.UTF-8 -U postgres -O MEINUSER MEINEDB | ||
| + | |||
| + | Dump in die Datenbank des neuen Benutzers einspielen: | ||
| + | > psql -U MEINUSER -d MEINEDB -f dump_xxx.sql | ||
| + | > echo -e " | ||
| + | |||
| + | |||
| + | === So geht es auch === | ||
| + | |||
| + | <code bash von 16 zu 17> | ||
| + | echo -e " | ||
| + | pg_dumpall -E UTF8 -U postgres --if-exists --inserts -c > dump_data+schema.sql | ||
| + | service postgresql stop | ||
| + | |||
| + | mv / | ||
| + | |||
| + | pkg info -oa | grep -Fi postgresql | ||
| + | postgresql16-client-16.9 | ||
| + | postgresql16-server-16.9_1 | ||
| + | pkg install -y databases/ | ||
| + | pkg info -oa | grep -Fi postgresql | ||
| + | postgresql17-client-17.5 | ||
| + | postgresql17-server-17.5_1 | ||
| + | |||
| + | su - postgres -c " | ||
| + | cat / | ||
| + | service postgresql start | ||
| + | echo -e " | ||
| + | |||
| + | time cat dump_data+schema.sql | psql -U postgres -d template1 | ||
| + | real 41m21.991s | ||
| + | user 0m4.765s | ||
| + | sys | ||
| + | |||
| + | echo " | ||
| + | </ | ||
| + | |||
| + | <code bash prüfen> | ||
| + | echo " | ||
| + | echo -e " | ||
| + | </ | ||
| + | |||
| + | |||
| + | ==== mit pg_upgrade ==== | ||
| + | |||
| + | **SICHERHEIT GEHT VOR!**\\ | ||
| + | Als erstes eine Sicherung anlegen **//(Bevor das Upgrade begonnen wird!)//**: | ||
| + | > pg_dumpall -E UTF8 -U postgres --if-exists --inserts -c > dumpall.sql | ||
| + | |||
| + | __Beachten Sie, dass '' | ||
| + | |||
| + | **Bei dieser Methode muß sowohl die alte als auch die neue Version, nebeneinander installiert sein!** => '' | ||
| + | |||
