Zarządzanie klastrami pod Ubuntu.

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.

Aktualizacja klastra z PostgreSQL 12 do PostgreSQL 14

Ważna uwaga!

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 du (sprawdzanie aktualne objętości katalogu) i df (sprawdzanie zajętego/wolnego miejsca na partycji).

du -hs /var/lib/postgresql
df -h /var/lib/postgresql

Zatrzymanie systemu Sowa

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

Usunięcie rozszerzenia pg_loonicode

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


Instalacja nowej wersji PostgreSQL 14

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:

  • aktualizacja stanu repozytorium (update)
  • aktualizacja wszystkich pakietów systemu (upgrade)
  • następnie instalacja PostgreSQL 14 i aktualizacja klastra z 12 do 14

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

Konserwacja bazy danych

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

Uruchomienie systemu Sowa

Skoro wszystko odbyło się po naszej myśli - możemy przywracać działanie systemu. To już z poziomu konta "sowa".

sowizor start all