Spis Treści
Upgrade PostgreSQL
Podniesienie wersji PostgreSQL (nieważne, czy main, czy minor) wymaga następujących kroków opisanych poniżej.
psql -l
Po pierwsze konieczność sprawdzenia, jak wygląda matryca użytkownicy, bazy danych, kodowanie:
psql -U pgsql -l
Backup bazy danych
Konieczne jest wykonanie backupu baz danych. Skrypt wykonuje oddzielnie również zapytanie SQL definiujące użytkowników: czy to samego postgres-a, jak również innych.
Proces upgrade-u
Należy wykonać upgrade -client, a potem -server do nowszej wersji, tak jak opisano to tutaj. Jako dodatkowy parametr należy podać: -m 'DISABLE_CONFLICTS=1'.
Po upgrade
Po pierwsze trzeba na nowo utworzyć katalog z bazami danych, konfiguracją etc. Konieczne jest zatem skasowanie obecnego katalogu. Przed deinstalacją warto wykonać backup plików konfiguracyjnych.
rm -rf /usr/local/pgsql/data/*
/usr/local/etc/rc.d/postgresql initdb
Upgrade do PostgreSQL 9 oraz bytea
Problem dotyczy głównie aplikacji mailzu, niemniej mogą trafić się inne aplikacje korzystające z bytea. Nowy format (domyślny) dla bytea to hex. Aby wszystko zostało po staremu (PostgreSQL <= 8.x), to konieczna jest modyfikacja w pliku postgres.conf:
bytea_output = 'escape' # hex, escape
Po restarcie bazy danych będzie działać poprawnie.
Odzyskiwanie backupów
Użytkownicy
Kolejnym krokiem jest odzyskanie backupów. Po pierwsze warto wgrać wszystkich użytkowników:
zcat /katalog/backupu/pgglobals_data.gz | grep -v pgsql | psql -U pgsql
Utworzenie baz danych
Następnie utworzenie baz danych zgodnie z kodowaniem, jakie było:
createdb -U pgsql -O <owner> -E <kodowanie> <nazwa_bazy_danych>
pg_restore
pg_restore -c -U pgsql -d <nazwa_bazy_danych> /katalog/backupu/pgdump_<nazwa_bazy_danych>
Na wszelki wypadek backup na nowo
Na wszelki wypadek warto zrobić backup na nowo. Niemniej powinno wszystko działać poprawnie i bez zarzutu.
Przekompilowanie portów zależnych
portupgrade -f databases/p5-DBD-Pg databases/php5-pgsql
PostgreSQL, skrypty, administracja, upgrade
