Como fazer uma pequena atualização do PostgreSQL no Windows, por exemplo, 9.3.0 a 9.3.1?

10

Qual é a maneira recomendada de executar uma pequena atualização do PostgreSQL, por exemplo, 9.3.0 para 9.3.1 usando o instalador do Windows, construído no Enterprise DB? Devo desinstalar primeiro ou apenas instalar sobre a instalação existente?

A instalação atual foi realizada com o postgresql-9.3.0-1-windows-x64.exe. Agora eu quero atualizar usando o postgresql-9.3.1-1-windows-x64.exe.

buzz3791
fonte
Conforme a documentação : pare o servidor, instale os novos binários e reinicie. É sempre uma boa idéia de ter um backup e, em geral, ter um plano B.
Dezso
Obrigado pelo link @dezso, eu li a seção do manual 9.3, mas achei um pouco vaga, especialmente no que diz respeito aos binários de instalação do Windows.
buzz3791
@ buzz3791 A pergunta / título está imprecisa agora, porque 10.0 a 10.1 é uma pequena atualização com o novo esquema de versão. Eu acho que você deve remover a e.g. ...peça.
isapir

Respostas:

8

No Windows, basta interromper o serviço postgresql e executar o postgresql-9.3.1-1-windows-x64.exe sobre as obras 9.3.0 existentes. Não é necessário desinstalar. Obviamente, um backup é recomendado.

Documentação clara e explícita para o procedimento de atualização no Windows está ausente. Observe que o link da documentação fornecido pelo @dezso foi movido no manual atual para: https://www.postgresql.org/docs/current/static/upgrading.html

As notas de versão do PostgreSQL normalmente documentam dicas de migração no Apêndice E. Por exemplo,

A melhor fonte de informações do instalador do Windows foram os fóruns do Enterprise DB. Aqui estão algumas postagens que eu achei que abordavam a questão ...

Observe que as informações de atualização se movem de uma versão para outra. Por exemplo,

Observe que em junho de 2017, o EnterpriseDB substituiu seus fóruns de discussão da comunidade que afetavam os links nesta resposta ( https://web.archive.org/web/20171021012954/https://www.enterprisedb.com/news/enterprisedb-announces- new-postgres-rocks-online-user-forum ). Consegui caçar algumas das postagens originais na Wayback Machine. Um link morto que não consegui reparar é: "Janeiro de 2010 - Atualizando para 8.4.2 da 8.4.1", http://forums.enterprisedb.com/posts/list/2115.page#7888 .

buzz3791
fonte
4

Para o registro, executando o instalador do Windows no Enterprise DB (o padrão, vinculado no site do Postgres ), pelo menos desde a versão atual do Postgres 9.4, você não precisa interromper o postgresqlserviço. O instalador faz isso por você. Você ainda precisa restabelecer conexões, se houver (a maioria dos clientes faz isso automaticamente).

Melhor consulte o manual atual (usando a versão atual do Postgres):

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

Erwin Brandstetter
fonte
3

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 pgsqlpara pgsql-10.1para que eu possa manter versões mais antigas até que seja considerado desnecessário.

Copiei os arquivos DLL msvcp120.dlle msvcr120.dllpara C:\postgres\pgsql-10.1\binporque 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 Typecomo 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_upgradeou algum outro método, mas, para uma atualização menor, esse método funcionou como um encanto.

isapir
fonte
11
Ainda bem que postei isso aqui. Eu apenas segui as instruções para actualizar a partir 10.1de 10.2e funcionou muito bem.
Isapir