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 pgsql
in pgsql-10.1
modo da poter mantenere le versioni precedenti fino a quando non sono ritenute inutili.
Ho copiato i file DLL msvcp120.dll
e msvcr120.dll
al C:\postgres\pgsql-10.1\bin
perché 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 Type
su 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_upgrade
o qualche altro metodo, ma per un aggiornamento minore questo metodo ha funzionato come un incantesimo.