Wie führe ich ein kleines Upgrade von PostgreSQL unter Windows durch, z. B. 9.3.0 auf 9.3.1?

10

Was ist die empfohlene Methode, um ein geringfügiges Upgrade von PostgreSQL, z. B. 9.3.0 auf 9.3.1, mit dem von Enterprise DB erstellten Windows-Installationsprogramm durchzuführen? Sollte ich zuerst deinstallieren oder nur über die vorhandene Installation installieren?

Die aktuelle Installation wurde mit postgresql-9.3.0-1-windows-x64.exe durchgeführt. Jetzt möchte ich mit postgresql-9.3.1-1-windows-x64.exe aktualisieren.

Buzz3791
quelle
Gemäß Dokumentation : Stoppen Sie den Server, installieren Sie die neuen Binärdateien und starten Sie neu. Es ist immer eine gute Idee, ein Backup zu erstellen und im Allgemeinen einen Plan B zu haben.
dezso
Vielen Dank für den Link @dezso. Ich hatte diesen Abschnitt des 9.3-Handbuchs gelesen, fand ihn jedoch etwas vage, insbesondere im Hinblick auf die Windows-Setup-Binärdateien.
Buzz3791
@uzz3791 Die Frage / der Titel ist jetzt ungenau, da 10.0 bis 10.1 ein kleines Upgrade mit dem neuen Versionsschema ist. Ich denke, dass Sie das e.g. ...Teil entfernen sollten .
Isapir

Antworten:

8

Unter Windows funktioniert es einfach, den postgresql-Dienst zu stoppen und dann postgresql-9.3.1-1-windows-x64.exe über dem vorhandenen 9.3.0 auszuführen. Keine Deinstallation notwendig. Natürlich wird ein Backup empfohlen.

Eine klare, explizite Dokumentation für das Aktualisierungsverfahren unter Windows fehlt. Beachten Sie, dass der von @dezso bereitgestellte Dokumentationslink im aktuellen Handbuch nach https://www.postgresql.org/docs/current/static/upgrading.html verschoben wurde

In den PostgreSQL-Versionshinweisen werden normalerweise Migrationstipps in Anhang E dokumentiert.

Die beste Quelle für Windows-Installationsinformationen waren die Enterprise DB-Foren. Hier sind einige Beiträge, die ich gefunden habe und die sich mit der Frage befassten ...

Beachten Sie, dass die Upgrade-Informationen von Release zu Release verschoben werden. Beispielsweise,

Beachten Sie, dass EnterpriseDB ab Juni 2017 die Community-Diskussionsforen ersetzt hat, die sich auf die Links in dieser Antwort auswirken ( https://web.archive.org/web/20171021012954/https://www.enterprisedb.com/news/enterprisedb-announces- New-Postgres-Rocks-Online-User-Forum ). Ich konnte einige der ursprünglichen Beiträge auf der Wayback-Maschine finden. Ein toter Link, den ich nicht reparieren konnte, ist: "Januar 2010 - Upgrade von 8.4.1 auf 8.4.2", http://forums.enterprisedb.com/posts/list/2115.page#7888 .

Buzz3791
quelle
4

Wenn Sie das Installationsprogramm für Windows über Enterprise DB ausführen (die Standardeinstellung, die über die Postgres-Site verknüpft ist ), müssen Sie den postgresqlDienst zumindest seit der aktuellen Version von Postgres 9.4 nicht beenden . Das Installationsprogramm erledigt das für Sie. Sie müssen gegebenenfalls noch Verbindungen wiederherstellen (die meisten Clients tun dies automatisch).

Lesen Sie am besten das aktuelle Handbuch (unter Verwendung der aktuellen Version von Postgres):

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

Erwin Brandstetter
quelle
3

Ich habe gerade Postgres 10.0 auf 10.1 aktualisiert und es war ein sehr schnelles und einfaches Upgrade.

Ich habe die Binärdateien von https://www.enterprisedb.com/download-postgresql-binaries heruntergeladen und entpackt C:\postgresund dann das Verzeichnis pgsqlin umbenannt , pgsql-10.1damit ich ältere Versionen behalten kann, bis sie als unnötig erachtet werden.

Ich kopierte die DLL - Dateien msvcp120.dllund msvcr120.dllzu , C:\postgres\pgsql-10.1\binweil ich es vorziehen , dass eine einfache Installation über den „Installer“ , die wahrscheinlich viel mehr aufblasen fügt als nötig.

Ich habe dann dieses einfache Batch-Skript verwendet, das ich in der Vergangenheit geschrieben habe:

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%

Ich lief SELECT version();in psql, um die alte Version zu bestätigen:

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

Ich habe dann das Batch-Skript ausgeführt, über dem ein Dienst mit dem Namen installiert wurde postgres-10.1.

Ich hielt den alten Dienst und legen Sie seine Startup Typezu Disabled, und den neuen Dienst gestartet.

Das SELECT version();erneute Ausführen in psql bestätigte das Upgrade (musste zweimal ausgeführt werden, da die Verbindung abgebrochen wurde, als ich den alten Server stoppte):

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

Denken Sie daran, dass für das Upgrade einer Hauptversion das Datenverzeichnis mit pg_upgradeeiner anderen Methode aktualisiert werden muss. Bei einem kleinen Upgrade hat diese Methode jedoch wie ein Zauber gewirkt.

Isapir
quelle
1
Gut, dass ich das hier gepostet habe. Ich habe gerade die Anweisungen zum Upgrade von 10.1auf befolgt 10.2und es hat großartig funktioniert.
Isapir