W systemie Ubuntu nie zarządzamy klastrami przy pomocy standardowej komendy initdb, zamiast tego używamy komend pg_lsclusters, pg_dropcluster, and pg_createcluster, które są tak naprawdę wrapperami do initdb.
Zanim przystąpisz do operacji upewnij się, że na na partycji z klastrem Postgresa (jego lokalizacja to zwykle /var/lib/postgresql) jest co najmniej tyle wolnego miejsca ile zajmuje cały klaster. Pomocne będą komendy
|
Koniecznie przed całą operacją należy zatrzymać wszystkie składniki instalacji systemu Sowa. W tym celu z poziomu użytkownika "sowa" wykonujemy polecenie:
sowizor stop all |
Jest to zbędne już rozszerzenie, którego usunięcie jest konieczne by powiodła się aktualizacja do PG14.
Do usunięcia rozszerzenia należy użyć skryptu (uruchomionego z poziomu konta root !!!):
/home/sowa/sowang3/bin/loonicode-uninstaller |
Wszystkie dalsze kroki wymagają dostępu do konta root.
Sprawdź, czy masz skonfigurowane oficjalne repozytorium PostgreSQL dla Ubuntu. Powinno ono być zdefiniowane w pliku: /etc/apt/sources.list.d/pgdg.list
. Jeśli nie jest, ustaw je poleceniem:
echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - |
Zanim ruszysz dalej, sprawdź na pewno gdzie i jakie są aktualnie zainstalowane klastry:
pg_lsclusters |
Powinna ona dać takie mniej więcej rezultaty:
Ver Cluster Port Status Owner Data directory Log file 12 main 5432 online postgres /var/lib/postgresql/12/main /var/log/postgresql/postgresql-12-main.log |
Dalsze kroki to kolejno:
Zalecamy wykonywanie tych poleceń osobno i postępowanie zgodnie z komunikatami na ekranie (warto także uruchomić wcześniej konsolę screen
).
apt update apt upgrade apt install postgresql-14 pg_dropcluster 14 main --stop systemctl stop postgresql pg_upgradecluster -m upgrade 12 main |
Jeśli wszystko przebiegło bez problemu, można usunąć klaster 12.
pg_dropcluster 12 main |
A następnie uruchomić Postgresa.
systemctl start postgresql |
Po skutecznym upgrade klastra zalecane jest wykonanie podstawowych operacji odkurzania i reindeksacji wszystkich baz.
su - postgres vacuumdb -a -e -f -z reindexdb -a -e for db in $(psql -c 'SELECT datname from pg_database' | grep db); do psql -c 'ALTER COLLATION pg_catalog."pl-x-icu" REFRESH VERSION;' $db; done |
Natomiast w bazach poszczególnych katalogów systemu Sowa:
su - sowa sowizor adm sowasql refresh |
Skoro wszystko odbyło się po naszej myśli - możemy przywracać działanie systemu. To już z poziomu konta "sowa".
sowizor start all |