Różnice pomiędzy wersjami 3 i 6 (Spinanie 3 wersji)
⇤ ← Wersja 3 z 2015-07-12 02:38:05 →
Rozmiar: 3515
Edytor: wtps0n
Komentarz: + linki do poudriere
← Wersja 6 z 2017-12-14 15:02:39 → ⇥
Rozmiar: 3801
Edytor: wtps0n
Komentarz: literówka w highlight
Usunięcia zostały oznaczone w ten sposób. Dodatki zostały oznaczone w ten sposób.
Linia 11: Linia 11:
{{{#!shell numbers=off {{{#!highlight bash numbers=off
Linia 13: Linia 13:
}}}

=== Skrypt pomocniczy do kreacji baz po upgrade ===
{{{#!highlight bash numbers=off
psql -U pgsql -lt | egrep -v '(pgsql|^$)' | awk '{print "createdb -U pgsql -O", $3, "-E",$5, $1}' | tee /root/bin/psql.upgrade
Linia 19: Linia 24:
Należy wykonać upgrade '''-client''', a potem '''-server''' do nowszej wersji, tak jak opisano to [[TipsTricks#Reinstalacja_portu_z_jednoczesn.2BAQU_zamian.2BAQU_na_inny_r.2BAPM-wnowa.2BAXw-ny|tutaj]]. Jako dodatkowy parametr należy podać: `-m 'DISABLE_CONFLICTS=1'`.
Linia 21: Linia 25:
Albo o wieeeeeele prościej poprzez skorzystnie z `pkg` i [[PoudriereBinaryPkg|własnego repozytorium]] pakietów. Z wykorzystaniem [[PoudriereBinaryPkg|własnego repozytorium]] pakietów wykonujemy proces upgrade:
{{{#!highlight bash numbers=off
service postgresql stop

# deinstalacja klienta spowoduje deinstalacj/e wszystkich pakiet/ow zael/znych
#
pkg delete -y postgresql94-client

# instalacja serwera spowoduje zainstalowanie r/ownie/z klienta
#
pkg install -y postgresql95-server

}}}
Linia 24: Linia 41:
{{{#!shell numbers=off {{{#!highlight bash numbers=off
Linia 26: Linia 43:
Linia 31: Linia 49:
{{{ {{{#!highlight cfg numbers=off
Linia 37: Linia 55:
{{{ {{{#!highlight cfg numbers=off
Linia 50: Linia 68:
{{{#!shell numbers=off {{{#!highlight bash numbers=off
Linia 56: Linia 74:
{{{#!shell numbers=off {{{#!highlight bash numbers=off
Linia 59: Linia 77:
Albo też ze skryptu wygenerowanego w ramach przygotowań
Linia 61: Linia 80:
{{{#!shell numbers=off {{{#!highlight bash numbers=off
Linia 65: Linia 84:
=== pg_restore z utworzniem docelowej bazy danych === === pg_restore z utworzeniem docelowej bazy danych ===
Linia 68: Linia 87:
{{{#!shell numbers=off {{{#!highlight bash numbers=off
Linia 78: Linia 97:
{{{#!shell numbers=off
portupgrade -f databases/p5-DBD-Pg databases/php5-pgsql databases/php55-pgsql
}}}

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

Skrypt pomocniczy do kreacji baz po upgrade

psql -U pgsql -lt | egrep -v '(pgsql|^$)' | awk '{print "createdb -U pgsql -O", $3, "-E",$5, $1}' | tee /root/bin/psql.upgrade

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

Z wykorzystaniem własnego repozytorium pakietów wykonujemy proces upgrade:

service postgresql stop

# deinstalacja klienta spowoduje deinstalacj/e wszystkich pakiet/ow zael/znych
#
pkg delete -y postgresql94-client

# instalacja serwera spowoduje zainstalowanie r/ownie/z klienta
#
pkg install -y postgresql95-server

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

sprawdzenie ustawień syslog

PostgreSQL potrafi logować do sysloga zamiast na ekran. W tym celu trzeba sprawdzić ustawienia, aby były poprawne (zgodne z ustawieniami /etc/syslog.conf):

log_destination = 'syslog'
# These are relevant when logging to syslog:
syslog_facility = 'LOCAL3'
syslog_ident = 'postgres'

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 template1

Utworzenie baz danych

Następnie utworzenie baz danych zgodnie z kodowaniem, jakie było:

createdb -U pgsql -O <owner> -E <kodowanie> <nazwa_bazy_danych>

Albo też ze skryptu wygenerowanego w ramach przygotowań

pg_restore

pg_restore -c -U pgsql -d <nazwa_bazy_danych> /katalog/backupu/pgdump_<nazwa_bazy_danych>

pg_restore z utworzeniem docelowej bazy danych

Opcja -v oczywiście spowoduje głośne logowanie pg_restore na ekran:

pg_restore -C -v -U pgsql  /katalog/backupu/pgdump_<nazwa_bazy_danych> | psql -U pgsql template1

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

Przy wykorzystaniu własnego repozytorium pakietów krok jest zbędny - polecenie pkg zrobi wszystko za nas.


PostgreSQL, skrypty, administracja, upgrade


{i}  (c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.

UpgradePostgresql (ostatnio edytowane 2024-10-25 09:13:39 przez wtps0n)