====== 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