|
Rozmiar: 3515
Komentarz: + linki do poudriere
|
Rozmiar: 3801
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 }}} |
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
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
(c) 2004 - 2026 BSD Serwis Krzysztof Stryjek. W przypadku błędów, poprawek proszę kontaktować się z administratorem wiki.
