Jak wykonać niewielką aktualizację PostgreSQL w systemie Windows, np. Z wersji 9.3.0 do 9.3.1?


10

Jaki jest zalecany sposób wykonania drobnej aktualizacji z PostgreSQL, np. 9.3.0 do 9.3.1, za pomocą instalatora systemu Windows wbudowanego w Enterprise DB? Czy powinienem najpierw odinstalować, czy po prostu zainstalować na istniejącej instalacji?

Obecna instalacja została wykonana przy pomocy postgresql-9.3.0-1-windows-x64.exe. Teraz chcę uaktualnić za pomocą postgresql-9.3.1-1-windows-x64.exe.


Zgodnie z dokumentacją : zatrzymaj serwer, zainstaluj nowe pliki binarne i uruchom ponownie. Zawsze dobrym pomysłem jest zrobienie kopii zapasowej i, ogólnie rzecz biorąc, posiadanie planu B.
dezso

Dzięki za link @dezso, przeczytałem tę sekcję instrukcji 9.3, ale uznałem ją za nieco niejasną, szczególnie w odniesieniu do plików binarnych instalacyjnych systemu Windows.
buzz3791,

@ buzz3791 Pytanie / tytuł jest teraz niedokładny, ponieważ 10.0 do 10.1 to niewielkie uaktualnienie w nowym schemacie kontroli wersji. Myślę, że powinieneś usunąć tę e.g. ...część.
isapir

Odpowiedzi:


8

W systemie Windows wystarczy zatrzymać usługę postgresql, a następnie uruchomić program postgresql-9.3.1-1-windows-x64.exe na istniejącej wersji 9.3.0. Odinstalowanie nie jest konieczne. Oczywiście zalecane jest wykonanie kopii zapasowej.

Brakuje wyraźnej, wyraźnej dokumentacji dotyczącej procedury aktualizacji w systemie Windows. Zauważ, że łącze do dokumentacji dostarczone przez @dezso zostało przeniesione w bieżącym podręczniku do: https://www.postgresql.org/docs/current/static/upgrading.html

Uwagi do wydania PostgreSQL zazwyczaj dokumentują porady dotyczące migracji w Dodatku E. Na przykład:

Najlepszym źródłem informacji o instalatorze Windows były fora Enterprise DB. Oto kilka zamieszczonych przeze mnie postów, które dotyczyły pytania ...

Pamiętaj, że informacje o aktualizacji zmieniają się od wydania do wydania. Na przykład,

Pamiętaj, że od czerwca 2017 r. EnterpriseDB zastąpiło fora dyskusyjne społeczności wpływające na linki w tej odpowiedzi ( https://web.archive.org/web/20171021012954/https://www.enterlictb.com/news/enterposedb-announces- new-postgres-rocks-online-user-forum ). Udało mi się wyśledzić niektóre oryginalne posty na Wayback Machine. Jednym z martwych linków, których nie byłem w stanie naprawić, jest: „Styczeń 2010 - aktualizacja do 8.4.2 z 8.4.1”, http://forums.enterlictb.com/posts/list/2115.page#7888 .


4

Dla przypomnienia, uruchomienie instalatora dla Windows z Enterprise DB (domyślnie, link z witryny Postgres ), przynajmniej od obecnej wersji Postgres 9.4, nie musisz zatrzymywać postgresqlusługi. Instalator zrobi to za Ciebie. Nadal musisz ponownie ustanowić połączenia, jeśli takie istnieją (większość klientów robi to automatycznie).

Najlepiej zapoznaj się z aktualną instrukcją (używając aktualnej wersji Postgres):

http://www.postgresql.org/docs/current/interactive/upgrading.html


3

Właśnie zaktualizowałem Postgres 10.0 do 10.1 i było to bardzo szybkie i łatwe uaktualnienie.

Pobrałem pliki binarne z https://www.enterlictb.com/download-postgresql-binaries i rozpakowałem je C:\postgres, a następnie zmieniłem nazwę katalogu pgsqlna, pgsql-10.1aby móc zachować starsze wersje, dopóki nie uznam ich za niepotrzebne.

Skopiowane pliki dll msvcp120.dll, a msvcr120.dlldo C:\postgres\pgsql-10.1\bindlatego, że wolę prostą instalację nad „Instalator”, które prawdopodobnie dodaje dużo więcej uwędzić niż potrzebne.

Następnie użyłem tego prostego skryptu wsadowego, który napisałem w przeszłości:

set MAJOR_VERSION=10
set MINOR_VERSION=1

set SERVICE_NAME=pgsql-%MAJOR_VERSION%.%MINOR_VERSION%

set PGHOME=C:\postgres\%SERVICE_NAME%
set PGDATA=C:\postgres\pgdata%MAJOR_VERSION%

%PGHOME%\bin\pg_ctl.exe register -N %SERVICE_NAME% -U LocalSystem -S auto --pgdata=%PGDATA%

::: to unregister old service:
::%PGHOME%\bin\pg_ctl.exe unregister -N %SERVICE_NAME%

Uruchomiłem SELECT version();w psql, aby potwierdzić starą wersję:

postgres=# select version();
-[ RECORD 1 ]-------------------------------------------------------
version | PostgreSQL 10.0, compiled by Visual C++ build 1800, 64-bit

Następnie uruchomiłem skrypt wsadowy, powyżej którego zainstalowałem usługę o nazwie postgres-10.1.

Przestałem starą usługę i ustawić jej Startup Typesię Disabledi rozpoczęła nową usługę.

Uruchomiony SELECT version();ponownie w psql zatwierdzeni uaktualnienie (musiał go uruchomić dwa razy ze względu na połączenie jest przerwane kiedy zatrzymał starego serwera):

postgres=# select version();
server closed the connection unexpectedly
        This probably means the server terminated abnormally
        before or while processing the request.
The connection to the server was lost. Attempting reset: Succeeded.
postgres=# select version();
-[ RECORD 1 ]-------------------------------------------------------
version | PostgreSQL 10.1, compiled by Visual C++ build 1800, 64-bit

Należy pamiętać, że aktualizacja głównej wersji wymaga aktualizacji katalogu danych za pomocą pg_upgradeinnej metody, ale w przypadku drobnej aktualizacji ta metoda działała jak urok.


1
Dobrze, że opublikowałem to tutaj. Po prostu zastosowałem się do instrukcji uaktualnienia z 10.1do 10.2i działało świetnie.
isapir
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.