====== PostgreSQL upgrade ======
Przygotowania (jako root):
service postgresql stop
pkg create postgresql17-server
mkdir /tmp/pg-upgrade
tar xf postgresql1?-server-1*.pkg -C /tmp/pg-upgrade
Aktualizujemy PostgreSQL:
pkg install postgresql18-server
Po aktualizacji wykonujemy migrację:
service postgresql initdb
su -l postgres -c "pg_upgrade -b /tmp/pg-upgrade/usr/local/bin/ -d /var/db/postgres/data17/ \
-B /usr/local/bin/ -D /var/db/postgres/data18/ -U postgres"
Po migracji odpalamy nowego PostgreSQL:
service postgresql start
===== Migracja 17 -> 18 =====
Od PostgreSQL 18 domyślnie włączone są sumy kontrolne dla danych. Jeśli nie było ich włączonych na wersji 17, wtedy podczas migracji pojawi się błąd:
old cluster does not use data checksums but the new one does
Rozwiązanie to tymczasowe wyłączenie sum kontrolnych na czas migracji (podczas zatrzymanego daemona):
pg_checksums --disable --pgdata /var/db/postgres/data18
Po zaimportowaniu danych można zrobić:
pg_checksums --enable --pgdata /var/db/postgres/data18
Checksum operation completed
Files scanned: 1797
Blocks scanned: 25195
Files written: 389
Blocks written: 20809
pg_checksums: syncing data directory
pg_checksums: updating control file
Checksums enabled in cluster