Come eseguire un aggiornamento minore di PostgreSQL su Windows, ad esempio da 9.3.0 a 9.3.1?


10

Qual è il modo consigliato per eseguire un aggiornamento minore da PostgreSQL, ad esempio da 9.3.0 a 9.3.1 usando il programma di installazione di Windows integrato in Enterprise DB? Devo disinstallare prima o semplicemente installare sull'installazione esistente?

L'attuale installazione è stata eseguita con postgresql-9.3.0-1-windows-x64.exe. Ora voglio aggiornare usando postgresql-9.3.1-1-windows-x64.exe.


Come da documentazione : arrestare il server, installare i nuovi binari e riavviare. È sempre una buona idea fare un backup, e in generale, avere un piano B.
dezso

Grazie per il link @dezso, avevo letto quella sezione del manuale 9.3 ma l'ho trovato un po 'vago, soprattutto per quanto riguarda i file binari di installazione di Windows.
buzz3791,

@ buzz3791 La domanda / titolo non è precisa ora perché 10.0 a 10.1 è un aggiornamento minore con il nuovo schema di versione. Penso che dovresti rimuovere la e.g. ...parte.
Isapir,

Risposte:


8

Su Windows, semplicemente arrestando il servizio postgresql, quindi eseguendo postgresql-9.3.1-1-windows-x64.exe in cima alle opere 9.3.0 esistenti. Nessuna disinstallazione necessaria. Naturalmente, si consiglia un backup.

La documentazione chiara ed esplicita per la procedura di aggiornamento su Windows è assente. Si noti che il collegamento alla documentazione fornito da @dezso è stato spostato nel manuale corrente in: https://www.postgresql.org/docs/current/static/upgrading.html

Le note sulla versione di PostgreSQL documentano tipicamente suggerimenti sulla migrazione nell'Appendice E. Ad esempio,

La migliore fonte di informazioni sull'installer di Windows erano i forum di Enterprise DB. Ecco alcuni post che ho trovato che hanno affrontato la domanda ...

Si noti che le informazioni di aggiornamento si spostano da una versione all'altra. Per esempio,

Si noti che a partire da giugno 2017, EnterpriseDB ha sostituito i forum di discussione della comunità che influiscono sui collegamenti in questa risposta ( https://web.archive.org/web/20171021012954/https://www.enterprisedb.com/news/enterprisedb-announces- new-postgres-rocks-online-user-forum ). Sono stato in grado di dare la caccia ad alcuni dei post originali sulla Wayback Machine. Un collegamento morto che non sono stato in grado di riparare è: "2010 gennaio - Aggiornamento a 8.4.2 da 8.4.1", http://forums.enterprisedb.com/posts/list/2115.page#7888 .


4

Per la cronaca, eseguendo il programma di installazione per Windows da Enterprise DB (impostazione predefinita, collegata dal sito Postgres ), almeno dalla versione corrente Postgres 9.4, non è necessario interrompere il postgresqlservizio. L'installatore lo fa per te. È comunque necessario ristabilire le connessioni, se presenti (la maggior parte dei client lo fa automaticamente).

Si consiglia di consultare il manuale corrente (utilizzando la versione corrente di Postgres):

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


3

Ho appena aggiornato Postgres da 10.0 a 10.1 ed è stato un aggiornamento molto semplice e veloce.

Ho scaricato i file binari da https://www.enterprisedb.com/download-postgresql-binaries e li ho decompressi C:\postgres, quindi ho rinominato la directory pgsqlin pgsql-10.1modo da poter mantenere le versioni precedenti fino a quando non sono ritenute inutili.

Ho copiato i file DLL msvcp120.dlle msvcr120.dllal C:\postgres\pgsql-10.1\binperché preferisco che semplice installazione sulla "Installer" che probabilmente aggiunge molto di più del necessario gonfiare.

Ho quindi usato questo semplice script batch che ho scritto in passato:

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%

Ho eseguito SELECT version();in psql per confermare la vecchia versione:

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

Ho quindi eseguito lo script batch sopra il quale ha installato un servizio denominato postgres-10.1.

Ho interrotto il vecchio servizio e impostato Startup Typesu Disabled, e ho avviato il nuovo servizio.

L'esecuzione di SELECT version();nuovo in psql ha confermato l'aggiornamento (è stato necessario eseguirlo due volte a causa dell'interruzione della connessione quando ho interrotto il vecchio server):

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

Tieni presente che l'aggiornamento di una versione principale richiede l'aggiornamento della directory dei dati con pg_upgradeo qualche altro metodo, ma per un aggiornamento minore questo metodo ha funzionato come un incantesimo.


1
Per fortuna l'ho pubblicato qui. Ho appena seguito le istruzioni per l'aggiornamento da 10.1a 10.2e ha funzionato benissimo.
Isapir,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.