Acabei de atualizar o Postgres 10.0 para 10.1 e foi uma atualização muito rápida e fácil.
Fiz o download dos binários em https://www.enterprisedb.com/download-postgresql-binaries e descompactei-os para C:\postgres
, em seguida, renomeei o diretório pgsql
para pgsql-10.1
para que eu possa manter versões mais antigas até que seja considerado desnecessário.
Copiei os arquivos DLL msvcp120.dll
e msvcr120.dll
para C:\postgres\pgsql-10.1\bin
porque eu prefiro que a instalação simples sobre o "Installer", que provavelmente acrescenta muito mais inchaço do que o necessário.
Eu então usei esse script em lote simples que escrevi no passado:
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%
Corri SELECT version();
no psql para confirmar a versão antiga:
postgres=# select version();
-[ RECORD 1 ]-------------------------------------------------------
version | PostgreSQL 10.0, compiled by Visual C++ build 1800, 64-bit
Em seguida, executei o script em lote acima do qual instalou um serviço chamado postgres-10.1
.
Parei o serviço antigo e defini Startup Type
como Disabled
, e iniciei o novo serviço.
A execução SELECT version();
novamente no psql confirmou a atualização (teve que executá-la duas vezes devido à interrupção da conexão quando parei o servidor antigo):
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
Lembre-se de que atualizar uma versão principal requer atualização do diretório de dados com pg_upgrade
ou algum outro método, mas, para uma atualização menor, esse método funcionou como um encanto.