Comment faire une mise à niveau mineure de PostgreSQL sur Windows, par exemple 9.3.0 à 9.3.1?


10

Quelle est la méthode recommandée pour effectuer une mise à niveau mineure de PostgreSQL, par exemple 9.3.0 vers 9.3.1 à l'aide du programme d'installation de fenêtres intégré à Enterprise DB? Dois-je d'abord désinstaller ou simplement installer sur l'installation existante?

L'installation actuelle a été effectuée avec postgresql-9.3.0-1-windows-x64.exe. Maintenant, je veux mettre à niveau en utilisant postgresql-9.3.1-1-windows-x64.exe.


Selon la documentation : arrêtez le serveur, installez les nouveaux binaires et redémarrez. C'est toujours une bonne idée de faire une sauvegarde, et généralement, d'avoir un plan B.
dezso

Merci pour le lien @dezso, j'avais lu cette section du manuel 9.3 mais je l'ai trouvée un peu vague, en particulier en ce qui concerne les binaires d'installation de Windows.
buzz3791

@ buzz3791 La question / le titre est inexact maintenant car 10.0 à 10.1 est une mise à niveau mineure avec le nouveau schéma de version. Je pense que vous devriez retirer la e.g. ...pièce.
isapir

Réponses:


8

Sous Windows, arrêtez simplement le service postgresql, puis exécutez postgresql-9.3.1-1-windows-x64.exe en plus des travaux 9.3.0 existants. Aucune désinstallation nécessaire. Bien sûr, une sauvegarde est recommandée.

La documentation claire et explicite de la procédure de mise à jour sous Windows est absente. Notez que le lien de documentation fourni par @dezso a été déplacé dans le manuel actuel vers: https://www.postgresql.org/docs/current/static/upgrading.html

Les notes de publication de PostgreSQL décrivent généralement des conseils de migration dans l'annexe E. Par exemple,

La meilleure source d'informations sur le programme d'installation de Windows était les forums Enterprise DB. Voici quelques messages que j'ai trouvés qui répondaient à la question ...

Notez que les informations de mise à niveau se déplacent d'une version à l'autre. Par exemple,

Notez qu'en juin 2017, EnterpriseDB a remplacé ses forums de discussion communautaires affectant les liens dans cette réponse ( https://web.archive.org/web/20171021012954/https://www.enterprisedb.com/news/enterprisedb-announces- new-postgres-rocks-online-user-forum ). J'ai pu traquer certains des messages originaux sur la Wayback Machine. Un lien mort que je n'ai pas pu réparer est: "2010 janvier - Mise à niveau vers 8.4.2 de 8.4.1", http://forums.enterprisedb.com/posts/list/2115.page#7888 .


4

Pour mémoire, en exécutant le programme d'installation pour Windows à partir de la base de données d'entreprise (par défaut, lié à partir du site Postgres ), au moins depuis la version actuelle Postgres 9.4, vous n'avez pas à arrêter le postgresqlservice. Le programme d'installation le fait pour vous. Vous devez toujours rétablir les connexions, le cas échéant (la plupart des clients le font automatiquement).

Veuillez vous référer au manuel actuel (en utilisant la version actuelle de Postgres):

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


3

Je viens de mettre à niveau Postgres 10.0 vers 10.1 et ce fut une mise à niveau très rapide et facile.

J'ai téléchargé les fichiers binaires depuis https://www.enterprisedb.com/download-postgresql-binaries et les ai décompressés C:\postgres, puis j'ai renommé le répertoire pgsqlpour pgsql-10.1que je puisse conserver les anciennes versions jusqu'à ce qu'elles soient jugées inutiles.

J'ai copié les fichiers dll msvcp120.dllet msvcr120.dllà C:\postgres\pgsql-10.1\binparce que je préfère que l' installation simple sur le « Installer » qui ajoute probablement beaucoup plus ballonnement que nécessaire.

J'ai ensuite utilisé ce simple script batch que j'ai écrit dans le passé:

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%

J'ai couru SELECT version();en psql pour confirmer l'ancienne version:

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

J'ai ensuite exécuté le script batch ci-dessus qui a installé un service nommé postgres-10.1.

Je me suis arrêté l'ancien service et mis son Startup Typeà Disabled, et a commencé le nouveau service.

Une SELECT version();nouvelle exécution dans psql a confirmé la mise à niveau (j'ai dû l'exécuter deux fois en raison de l'interruption de la connexion lorsque j'ai arrêté l'ancien serveur):

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

Gardez à l'esprit que la mise à niveau d'une version majeure nécessite la mise à jour du répertoire de données avec pg_upgradeou une autre méthode, mais pour une mise à niveau mineure, cette méthode a fonctionné comme un charme.


1
Heureusement que j'ai posté ceci ici. J'ai juste suivi les instructions pour passer de 10.1à 10.2et cela a très bien fonctionné.
isapir
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.