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
Warning | |||||
---|---|---|---|---|---|
| |||||
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
|
...
Code Block | ||
---|---|---|
| ||
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 !!!):
Code Block |
---|
/home/sowa/sowang3/bin/loonicode-uninstaller |
Instalacja nowej wersji PostgreSQL
...
14
Wszystkie dalsze kroki wymagają dostępu do konta root.
Jeśli instalacja korzysta z pgbouncera, trzeba go oczywiście najpierw zatrzymać:
Code Block | ||
---|---|---|
| ||
systemctl stop pgbouncer |
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:
Code Block |
---|
echo "deb http://apt.postgresql.org/pub/repos/apt/ bionic $(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 - |
...
No Format |
---|
Ver Cluster Port Status Owner Data directory Log file 1012 main 5432 online postgres /var/lib/postgresql/1012/main /var/log/postgresql/postgresql-1012-main.log |
Dalsze kroki to kolejno:
- aktualizacja stanu repozytorium (update)
- aktualizacja wszystkich pakietów systemu (upgrade)
- następnie instalacja PostgreSQL 12 14 i aktualizacja klastra z 10 12 do 1214
Zalecamy wykonywanie tych poleceń osobno i postępowanie zgodnie z komunikatami na ekranie (warto także uruchomić wcześniej konsolę screen
).
Code Block | ||
---|---|---|
| ||
apt update apt upgrade apt install postgresql-1214 pg_dropcluster 1214 main --stop systemctl stop postgresql pg_upgradecluster -m upgrade 10 main | ||
Warning | ||
| ||
W przypadku Ubuntu 16.04 występuje problem podczas migracji, polegający na tym, że nie jest tworzony odpowiedni katalog tymczasowy do analizy klastra. Objawia się to długotrwałym zatrzymaniem procesu na komunikacie:
W takiej sytuacji należy, przy pomocy np. komendy ps, sprawdzić w którym katalogu składowane są logi z migracji i w pliku pg_upgrade_server.log odczytać powód problemu. Zwykle rozwiązaniem będzie wykonanie poleceń: mkdir /var/run/postgresql/12-main.pg_stat_tmp chown postgres /var/run/postgresql/12-main.pg_stat_tmp 12 main
|
Jeśli wszystko przebiegło bez problemu, można usunąć klaster 1012.
Code Block |
---|
pg_dropcluster 1012 main |
Ostatecznie - o ile używamy pgbouncera - trzeba go uruchomićA następnie uruchomić Postgresa.
Code Block | ||
---|---|---|
| ||
systemctl start postgresql systemctl start pgbouncer |
Konserwacja bazy danych
Po skutecznym upgrade klastra zalecane jest wykonanie podstawowych operacji odkurzania i reindeksacji wszystkich baz.
Code Block | ||
---|---|---|
| ||
su - postgres
vacuumdb -a -e -f -z
reindexdb -a -e
psql
alter collation pg_catalog."pl-x-icu" refresh version; |
Natomiast w bazach poszczególnych katalogów systemu Sowa:
...
Code Block | ||
---|---|---|
| ||
sowizor start all |
Potencjalne problemy
Zbyt wysoka wersja klienta PostgreSQL
Jeśli podczas próby upgrade'u klastra pojawi się błąd typu:
No Format |
---|
Error: no initdb program for version 13 found
Error: Could not create target cluster |
oznacza to, że jest zainstalowana zbyt wysoka wersja klienta PostgreSQL.
W takiej sytuacji warto go odinstalować:
Code Block |
---|
apt remove postgresql-client-13 |