Temat: PostgrSQL - kopia bazy danych pomiędzy serwerami.
Masz klaster bazy przygotowany przez engine w wersji 8.x. Przekopiowanie plików i uruchomienie klastra z engine w wersji 9.x to nadal wersja klastra 8.x. Engine nowej gałęzi PostgreSQL nie będzie się o to awanturował ale przy bardziej złożonej bazie powstaną problemy (np. róznice w sposobie zapisywania podstawowych typów jak int, varchar).
PostgreSQL zaleca przechodzenie pomiędzy gałęziami tylko i wyłącznie przy pomocy dump & restore. Wtedy będziesz miał engine 9.x i klaster bazy 9.x
Polecam zrobienie dump w trzech krokach:
1. Zrzut użytkowników, grup, haseł, itp.
pg_dumpall -v -U {uzytkownik} -h {host} -p {port} -g -o -l {baza danych} --disable-dollar-quoting --disable-triggers --quote-all-identifiers -f global.sql
2. Zrzut struktury obiektów bazy (schematy, tabele, widok, itp.)
pg_dump -v -U {uzytkownik} -h {host} -p {port} -s -E UTF8 -o --disable-dollar-quoting --disable-triggers --quote-all-identifiers -f structure.sql {baza danych}
Uwaga: Tu dump do kodowania UTF-8.
3. Zrzut samych danych
pg_dump -v -U {uzytkownik} -h {host} -p {port} -a -E UTF8 -o --disable-dollar-quoting --disable-triggers --quote-all-identifiers -f data.sql {baza danych}
Uwaga: Tu dump do kodowania UTF-8.
Odtwarzanie w nowej wersji bazy (zakładam, że stworzono wcześniej użytkownika oraz bazę danych o takich samych nazwach jak w starszej wersji):
1. Odtwarzanie użytkowników, grupy, itp.
psql -U {uzytkownik} -h {host} -p {port} -f global.sql
2. Odtwarzanie struktury bazy
psql -U {uzytkownik} -h {host} -p {port} -f structure.sql
3. Odtwarzanie danych
psql -U {uzytkownik} -h {host} -p {port} -f data.sql
Uwaga! Powyższa kolejność musi być zachowana.
Tak jak pisze przedmówca należy użyć narzędzi (pg_dump, psql) z nowej gałęzi PostgreSQL. Jeżeli użyjesz starych to nie uda się zrobić restore'a. Korzystanie z programów typu pgAdmin, Navicat czy innych zdecydowanie odradzam przy tej operacji.
Ten post został edytowany przez Autora dnia 24.11.14 o godzinie 23:33