Wie kann ich PostgreSQL von Version 9.6 auf Version 10.1 aktualisieren, ohne Daten zu verlieren?


207

Ich verwende die PostgreSQL-Datenbank für meine Ruby on Rails-Anwendung (unter Mac OS X 10.9).

Gibt es detaillierte Anweisungen zum Aktualisieren der PostgreSQL-Datenbank?

Ich fürchte, ich werde die Daten in der Datenbank zerstören oder durcheinander bringen.


7
Machen Sie auf jeden Fall Backups.
Patrick Oscity

Antworten:


401

Angenommen, Sie haben Postgres mit Home-Brew installiert und aktualisiert, können Sie die folgenden Schritte ausführen.

  1. Stoppen Sie den aktuellen Postgres-Server:

    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  2. Initialisieren Sie eine neue 10.1-Datenbank:

    initdb /usr/local/var/postgres10.1 -E utf8

  3. Ausführen pg_upgrade (Hinweis: Ändern Sie die Bin-Version, wenn Sie ein Upgrade von einer anderen als der folgenden Version durchführen) :

    pg_upgrade -v \
        -d /usr/local/var/postgres \
        -D /usr/local/var/postgres10.1 \
        -b /usr/local/Cellar/postgresql/9.6.5/bin/ \
        -B /usr/local/Cellar/postgresql/10.1/bin/

    -v um die ausführliche interne Protokollierung zu aktivieren

    -d das alte Datenbankcluster-Konfigurationsverzeichnis

    -D das neue Datenbankcluster-Konfigurationsverzeichnis

    -b das alte ausführbare PostgreSQL-Verzeichnis

    -B das neue ausführbare PostgreSQL-Verzeichnis

  4. Verschieben Sie neue Daten an ihren Platz:

    cd /usr/local/var
    mv postgres postgres9.6
    mv postgres10.1 postgres
  5. Starten Sie Postgres neu:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  6. Überprüfen Sie die /usr/local/var/postgres/server.logDetails und stellen Sie sicher, dass der neue Server ordnungsgemäß gestartet wurde.

  7. Schließlich, installieren Sie die Schienen pggem

    gem uninstall pg
    gem install pg

Ich schlage vor, Sie nehmen sich etwas Zeit, um die PostgreSQL-Dokumentation zu lesen und genau zu verstehen, was Sie in den obigen Schritten tun, um Frustrationen zu minimieren.


8
Ich musste den folgenden Befehl verwenden, um die Datenbank zu initialisieren:initdb /usr/local/var/postgres9.4 -E utf8 --lc-collate=C --lc-ctype=utf-8 --lc-monetary=C --lc-numeric=C
sunsations

Es folgt Schritt für Schritt Ihrer Anleitung. Und alles hat funktioniert! Ich danke dir sehr.
Trantor Liu

3
Seien Sie vorsichtig mit dem delete_old_cluster.shBefehl. Ich hatte zuerst die Verzeichnisse /usr/local/postgres9.3 manuell gelöscht, dann diesen Befehl ausgeführt und anscheinend das gesamte Verzeichnis / usr / local / var / postgres verloren (ich konnte es von Time Machine wiederherstellen)
peter_v

1
Wenn Sie Bundler verwenden, sollten Sie den Edelstein mit entfernen, gem uninstall pgaber dann Bundler die richtige Version von Gemfile.lock neu installieren lassen, indem Sie ihn einfach ausführen bundle.
Danielricecodes

1
Kleines Update: hat brewjetzt auch die Option zu verwenden brew services stop postgresqlund brew services start postgresqlanstatt direkt launchctl unloadund anzurufen launchctl load.
florish

59

Trotz aller Antworten oben gehen hier meine 5 Cent.

Es funktioniert auf jedem Betriebssystem und von jeder Postgres-Version.

  • Stoppen Sie alle laufenden Postgres-Instanzen.
  • Installieren Sie die neue Version und starten Sie sie. Überprüfen Sie, ob Sie auch eine Verbindung zur neuen Version herstellen können.
  • Ändern Sie alte Versionen postgresql.conf-> portvon 5432nach 5433;
  • Starten Sie die Postgres-Instanz der alten Version.
  • Öffnen Sie ein Terminal und wechseln Sie cdin den neuen Versionsordner bin.
  • Lauf pg_dumpall -p 5433 -U <username> | psql -p 5432 -U <username>
  • Stoppen Sie die Ausführung der alten Postgres-Instanz.

4
Danke Christian, dies ist definitiv eine großartige und einfache Lösung. Ich bin erfolgreich von 9.3 auf 9.5
gegangen

3
Funktionierte hervorragend für das Upgrade von 9.1 auf 9.5 auf einem Windows 2012-Server.
Rolf

4
Ein Problem dieser Lösung besteht darin, dass Sie diese Änderungen in der neuen Installation manuell replizieren müssten , wenn Sie einige Postgres-Konfigurationsdateien (z. B. postgresql.confoder pg_hba.conf) geändert hätten. Stattdessen, wenn Sie verwenden , pg_upgradeclustererhalten, Konfigurationsdateien zu dem neuen Cluster kopiert: manpages.ubuntu.com/manpages/precise/man8/...
Alphaaa

1
Beachten Sie, dass Sie direkt nach dem Starten des Befehls eine Kennwortabfrage erhalten. Sie müssen jedoch zwei Kennwörter einzeln eingeben, die jeweils durch Eingabe bestätigt werden. Oder du bekommstpg_dumpall: could not connect to database "XXX": fe_sendauth: no password supplied
Lu55

2
Technisch gesehen funktioniert dies nicht für jede Version, nur für Quellversionen ab 7.0, wie im Handbuch angegeben:Current releases of the dump programs can read data from any server version back to 7.0.
Mark Tielemans

56

Hier ist die Lösung für Ubuntu- Benutzer

Zuerst müssen wir postgresql stoppen

sudo /etc/init.d/postgresql stop

Erstellen Sie eine neue Datei mit dem Namen /etc/apt/sources.list.d/pgdg.list und fügen Sie die folgende Zeile hinzu

deb http://apt.postgresql.org/pub/repos/apt/ utopic-pgdg main

Befolgen Sie die folgenden Befehle

wget -q -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | sudo apt-key add -
sudo apt-get update
sudo apt-get install postgresql-9.4
sudo pg_dropcluster --stop 9.4 main 
sudo /etc/init.d/postgresql start

Jetzt haben wir alles, müssen es nur noch wie folgt aktualisieren

sudo pg_upgradecluster 9.3 main
sudo pg_dropcluster 9.3 main

Das ist es. Der meist aktualisierte Cluster wird auf Portnummer 5433 ausgeführt. Überprüfen Sie dies mit dem folgenden Befehl

sudo pg_lsclusters

2
Der vorletzte Satz, in dem Sie sagen "Der am häufigsten aktualisierte Cluster wird auf Portnummer 5433 ausgeführt", sollte wahrscheinlich lauten: "Der 9.3-Cluster wird auf Portnummer 5433 ausgeführt, damit Sie ihn bei Bedarf zurücksetzen können".
Andrew Thaddeus Martin

3
Hinweis: Für Ubuntu 14.04 verwenden Sie "trusty-pgdb" anstelle von utopic-pgdb
Johnny

3
Beachten Sie, dass dies KEIN direktes Upgrade durchführt. Es ist daher für meine 700-GB-Datenbank auf einem 1-TB-Volume völlig nutzlos.
Gefälschter Name

16

Update : Dieser Vorgang ist der gleiche für das Upgrade von 9.5 auf mindestens 11.5. Ändern Sie einfach die Befehle, um Versionen widerzuspiegeln, 9.6und 10wo 9.6ist die alte Version und 10ist die neue Version. Stellen Sie sicher, dass Sie auch die Verzeichnisse "alt" und "neu" entsprechend anpassen.


Ich habe gerade PostgreSQL 9.5 unter Ubuntu auf 9.6 aktualisiert und dachte, ich würde meine Erkenntnisse teilen, da es einige betriebssystem- / paketspezifische Nuancen gibt, die beachtet werden müssen.

( Ich wollte keine Daten manuell sichern und wiederherstellen müssen , daher waren einige der anderen Antworten hier nicht realisierbar.)

Kurz gesagt, der Prozess besteht darin, die neue Version von PostgreSQL neben der alten Version (z. B. 9.5 und 9.6) zu installieren und dann die pg_upgradeBinärdatei auszuführen, die in (einigen) Details unter https://www.postgresql.org/ erläutert wird. docs / 9.6 / static / pgupgrade.html .

Der einzige "knifflige" Aspekt pg_upgradeist, dass der richtige Wert für ein Argument nicht übergeben oder nicht als der richtige Benutzer oder angemeldet werden kanncd am richtigen Ort vor der Ausführung eines Befehls zu kryptischen Fehlermeldungen führen kann.

Unter Ubuntu (und wahrscheinlich unter Debian) deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg mainsollte das folgende Verfahren ausgeführt werden , sofern Sie das "offizielle" Repo verwenden und die Standardpfade des Dateisystems oder die Laufzeitoptionen nicht geändert haben.

Installieren Sie die neue Version (beachten Sie, dass wir die 9.6explizit angeben ):

sudo apt install postgresql-9.6

Sobald die Installation erfolgreich ist, werden beide Versionen nebeneinander ausgeführt, jedoch an unterschiedlichen Ports. In der Installationsausgabe wird dies unten erwähnt, aber es ist leicht zu übersehen:

Creating new cluster 9.6/main ...
  config /etc/postgresql/9.6/main
  data   /var/lib/postgresql/9.6/main
  locale en_US.UTF-8
  socket /var/run/postgresql
  port   5433

Beenden Sie beide Serverinstanzen (dies stoppt beide gleichzeitig):

sudo systemctl stop postgresql

Wechseln Sie zum dedizierten Benutzer des PostgreSQL-Systems:

su postgres

Wechseln Sie in sein Ausgangsverzeichnis (wenn Sie dies nicht tun, werden Fehler verursacht):

cd ~

pg_upgrade erfordert die folgenden Eingaben ( pg_upgrade --helpsagt uns dies):

When you run pg_upgrade, you must provide the following information:
  the data directory for the old cluster  (-d DATADIR)
  the data directory for the new cluster  (-D DATADIR)
  the "bin" directory for the old version (-b BINDIR)
  the "bin" directory for the new version (-B BINDIR)

Diese Eingaben können mit "langen Namen" angegeben werden, um die Visualisierung zu vereinfachen:

  -b, --old-bindir=BINDIR       old cluster executable directory
  -B, --new-bindir=BINDIR       new cluster executable directory
  -d, --old-datadir=DATADIR     old cluster data directory
  -D, --new-datadir=DATADIR     new cluster data directory

Wir müssen auch den --new-optionsSchalter übergeben, da dies zu Folgendem führt:

connection to database failed: could not connect to server: No such file or directory
        Is the server running locally and accepting
        connections on Unix domain socket "/var/lib/postgresql/.s.PGSQL.50432"?

Dies liegt daran, dass die Standardkonfigurationsoptionen ohne diesen Schalter angewendet werden, was dazu führt, dass falsche Verbindungsoptionen verwendet werden, daher der Socket-Fehler.

Führen Sie den pg_upgradeBefehl aus der neuen PostgreSQL-Version aus:

/usr/lib/postgresql/9.6/bin/pg_upgrade --old-bindir=/usr/lib/postgresql/9.5/bin --new-bindir=/usr/lib/postgresql/9.6/bin --old-datadir=/var/lib/postgresql/9.5/main --new-datadir=/var/lib/postgresql/9.6/main --old-options=-cconfig_file=/etc/postgresql/9.5/main/postgresql.conf --new-options=-cconfig_file=/etc/postgresql/9.6/main/postgresql.conf

Abmelden vom dedizierten Systembenutzerkonto:

exit

Das Upgrade ist jetzt abgeschlossen, aber die neue Instanz wird an den Port gebunden 5433(der Standardwert ist 5432). Denken Sie also daran, wenn Sie versuchen, die neue Instanz zu testen, bevor Sie sie "umschneiden".

Starten Sie den Server wie gewohnt (dies startet erneut sowohl die alte als auch die neue Instanz):

systemctl start postgresql

Wenn Sie die neue Version als Standardversion festlegen möchten, müssen Sie beispielsweise die effektive Konfigurationsdatei bearbeiten /etc/postgresql/9.6/main/postgresql.confund sicherstellen, dass der Port als solcher definiert ist:

port = 5432

Wenn Sie dies tun, ändern Sie entweder gleichzeitig die Portnummer der alten Version 5433(vor dem Starten der Dienste) oder entfernen Sie einfach die alte Version (dadurch wird Ihr tatsächlicher Datenbankinhalt nicht entfernt; Sie müssten dies verwenden apt --purge remove postgresql-9.5, damit dies geschieht ):

apt remove postgresql-9.5

Der obige Befehl stoppt alle Instanzen, daher müssen Sie die neue Instanz ein letztes Mal starten mit:

systemctl start postgresql

Vergessen Sie abschließend nicht, den pg_upgradeguten Rat zu beachten :

Upgrade Complete
----------------
Optimizer statistics are not transferred by pg_upgrade so,
once you start the new server, consider running:
    ./analyze_new_cluster.sh

Running this script will delete the old cluster's data files:
    ./delete_old_cluster.sh

1
Für mich in Mac Yosemite, PostgreSQL 9.2 -> 9.5: sudo su postgresÄndern Sie alle Methode in beiden pg_hba.conf der Installation Vertrauen vor pg_upgrade, pg_upgrade in / private / tmp laufen nicht ~ nicht so funktionierte sudo mkdir /foobarmit chmod 777 /foobarund lief es dort. Endlich der Befehl pg_upgrade:/Library/PostgreSQL/9.5/bin/pg_upgrade -b /Library/PostgreSQL/9.2/bin -B /Library/PostgreSQL/9.5/bin -d /Library/PostgreSQL/9.2/data -D /Library/PostgreSQL/9.5/data -o -cconfig_file=/Library/PostgreSQL/9.2/data/postgresql.conf -O -cconfig_file=/Library/PostgreSQL/9.5/data/postgresql.conf
Jarno Argillander

1
Ich war in der Lage, erfolgreich von 9.5 auf 11.5 zu aktualisieren, musste Postgres Apt Repositories zu Ubuntu hinzufügen. und dann folgen Sie einfach diesen Schritten: tecadmin.net/install-postgresql-server-on-ubuntu
Shakee93

14

Wenn Sie Homebrew- und Homebrew-Dienste verwenden, können Sie wahrscheinlich einfach Folgendes tun:

brew services stop postgresql
brew upgrade postgresql
brew postgresql-upgrade-database
brew services start postgresql

Ich denke, dass dies möglicherweise nicht vollständig funktioniert, wenn Sie erweiterte Postgres-Funktionen verwenden, aber es hat perfekt für mich funktioniert.


1
Funktionierte perfekt für macOS Mojave 10.14.2 - Danke!
8bithero

13

Das Benutzerhandbuch behandelt dieses Thema ausführlich. Sie können:

  • pg_upgradean Ort und Stelle; oder

  • pg_dumpund pg_restore.

Wenn Sie Zweifel haben, machen Sie es mit Müllkippen. Löschen Sie nicht das alte Datenverzeichnis, sondern bewahren Sie es für den Fall auf, dass etwas schief geht oder Sie einen Fehler machen. Auf diese Weise können Sie einfach zu Ihrer unveränderten 9.3-Installation zurückkehren.

Einzelheiten finden Sie im Handbuch.

Wenn Sie nicht weiterkommen, stellen Sie eine detaillierte Frage, in der erläutert wird, wie Sie feststecken, wo und was Sie zuerst versucht haben. Es hängt ein wenig davon ab, wie Sie PostgreSQL installiert haben, da es (leider) verschiedene "Distributionen" von PostgreSQL für OS X gibt. Sie müssten diese Informationen also bereitstellen.


8

Ich stand auf den Schultern der anderen armen Kreaturen, die durch diesen Dreck traten, und konnte die folgenden Schritte ausführen, um nach einem Upgrade auf Yosemite wieder einsatzbereit zu sein:

Angenommen, Sie haben Postgres mit Home-Brew installiert und aktualisiert, können Sie die folgenden Schritte ausführen.

  1. Stoppen Sie den aktuellen Postgres-Server:

    launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  2. Initialisieren Sie eine neue 9.4-Datenbank:

    initdb /usr/local/var/postgres9.4 -E utf8

  3. Installieren Sie postgres 9.3 (da es auf meinem Computer nicht mehr vorhanden war):

    brew install homebrew/versions/postgresql93

  4. Fügen Sie Verzeichnisse hinzu, die während des Yosemite-Upgrades entfernt wurden:

    mkdir -p /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp}/touch /usr/local/var/postgres/{pg_tblspc,pg_twophase,pg_stat_tmp}/.keep

  5. run pg_upgrade:

    pg_upgrade -v -d /usr/local/var/postgres -D /usr/local/var/postgres9.4 -b /usr/local/Cellar/postgresql93/9.3.5/bin/ -B /usr/local/Cellar/postgresql/9.4.0/bin/

  6. Verschieben Sie neue Daten an ihren Platz:

    cd /usr/local/var
    mv postgres postgres9.3
    mv postgres9.4 postgres
  7. Starten Sie Postgres neu:

    launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

  8. Überprüfen Sie die /usr/local/var/postgres/server.logDetails und stellen Sie sicher, dass der neue Server ordnungsgemäß gestartet wurde.

  9. Schließlich verwandte Bibliotheken neu installieren?

    pip install --upgrade psycopg2
    gem uninstall pg
    gem install pg

1
pg_upgrade -v -d / usr / local / var / postgres -D /usr/local/var/postgres9.4 -b /usr/local/Cellar/postgresql93/9.3.*/bin/ -B / usr / local / Cellar /postgresql/9.4.*/bin/ # Kleinere Versionen können unterschiedlich sein.
Aaron McMillin

1
Danke dafür. Ich bin brew cleanupvor der Datenmigration versehentlich ausgeführt worden, wodurch postgres9.3 deinstalliert wurde. Das hat geholfen. :)
Markquezada

5

Sieht so aus, als wäre die Lösung jetzt in Homebrew eingebrannt:

$ brew info postgresql
...
==> Caveats
To migrate existing data from a previous major version of PostgreSQL run:
  brew postgresql-upgrade-database
....

1

Das hat es für mich getan.

https://gist.github.com/dideler/60c9ce184198666e5ab4

Kurz und auf den Punkt. Ich möchte ehrlich gesagt nicht den Mut von PostgreSQL verstehen, ich möchte Dinge erledigen.


1
Dies verwendet Ubuntus pg_upgradecluster-Tool, das viel langsamer sein kann als das pg_upgrade-Tool von PostgreSQL und natürlich nur unter Ubuntu verfügbar ist.
Alfonx

@alfonx Nicht wahr. Ich habe es auf meinem Debian jessie. Hatte mehr als 10 DBs und eine Menge von ~ 400 MB Datenbankdaten wurde im Handumdrehen konvertiert. Andererseits verwende ich ein virtuelles Debian auf einer SSD.
dimitarvp

Lassen Sie mich das korrigieren: pg_upgradecluster ist Teil der "Debian PostgreSQL-Infrastruktur" und daher nur in Debian-basierten Distributionen verfügbar. Über die Geschwindigkeit pg_upgrade bietet die Option "--link" an, mit der nach Möglichkeit keine Daten kopiert werden: postgresql.org/docs/9.4/static/pgupgrade.html
alfonx

1
Vielleicht streben wir unterschiedliche Ergebnisse an. Nach einem Distribution-weiten Software-Upgrade hatte ich 2 Versionen von PostgreSQL und die Daten, die meine Projekte verwendeten, steckten in der älteren Version (9.3) fest. Also habe ich einfach den obigen Link (in meiner Antwort) gesucht und ihn aktualisiert, um den alten "Cluster" und die ältere PG-Version loszuwerden.
dimitarvp

Ich habe versucht, ein Upgrade von 9.4 auf 11 mit durchzuführen, pg_upgradecluster 9.4 mainaber ich erhalte den Fehler Fehler: specified cluster does not exist... Ich denke, ich muss postgresql-9.4 zuerst mit dieser Anleitung erneut installieren: wiki.postgresql.org/wiki/Apt#Quickstart
rubo77

1

Unter Windows wurden bei der Verwendung immer wieder verschiedene Fehlermeldungen angezeigt pg_upgrade.

Ich habe viel Zeit gespart, um nur:

  1. Sicherungsdatenbank
  2. Deinstallieren Sie alle Kopien von PostgreSQL
  3. Installieren Sie 9.5
  4. DB wiederherstellen

Habe dies für 9,5 bis 9,6 gemacht und auch perfekt funktioniert. Es ist gut, auch ein einfaches, genaues Upgrade durchführen zu können, anstatt "aktuell". Ich habe Big SQL verwendet, um das richtige Installationsprogramm zu finden ( openscg.com/bigsql/postgresql/installers.jsp ).
Der Coder

0

Meine Lösung bestand darin, eine Kombination dieser beiden Ressourcen zu erstellen:

https://gist.github.com/tamoyal/2ea1fcdf99c819b4e07d

und

http://www.gab.lc/articles/migration_postgresql_9-3_to_9-4

Die zweite ein half mehr , dann dem ersten. Um dies nicht zu tun, befolgen Sie die Schritte nicht so, wie sie sind, da einige nicht erforderlich sind. Wenn Sie die Daten nicht über die Postgres-Konsole sichern können, können Sie einen alternativen Ansatz verwenden und sie mit pgAdmin 3 oder einem anderen Programm sichern, wie ich es in meinem Fall getan habe.

Außerdem der Link: https://help.ubuntu.com/stable/serverguide/postgresql.html Hilft beim Festlegen des verschlüsselten Kennworts und beim Festlegen von md5 für die Authentifizierung des Postgres-Benutzers.

Nachdem alles erledigt ist, überprüfen Sie serverdie im Terminal ausgeführte Postgres- Version:

sudo -u postgres psql postgres

Nach Eingabe des Passworts im Postgres-Terminal ausführen:

SHOW SERVER_VERSION;

Es wird etwas ausgegeben wie:

 server_version 
----------------
 9.4.5

Zum Setzen und Starten von Postgres habe ich den folgenden Befehl verwendet:

> sudo bash # root
> su postgres # postgres

> /etc/init.d/postgresql start
> /etc/init.d/postgresql stop

Und dann zum Wiederherstellen der Datenbank aus einer Datei:

> psql -f /home/ubuntu_username/Backup_93.sql postgres

Oder wenn es nicht funktioniert, versuchen Sie es mit diesem:

> pg_restore --verbose --clean --no-acl --no-owner -h localhost -U postgres -d name_of_database ~/your_file.dump

Und wenn Sie Rails verwenden, machen Sie eine bundle exec rake db:migratenach dem Ziehen des Codes :)



0

Unter Windows 10 habe ich, da ich npm hatte, das rimraf-Paket installiert. npm install rimraf -g

Sichern Sie alle Ihre Datenbanken einzeln mit dem Befehl pg_dump -U $username --format=c --file=$mydatabase.sqlc $dbname

Dann installierte ich die neueste PostgreSQL-Version, dh 11.2, die mich dieses Mal dazu veranlasste, Port 5433 zu verwenden.

Gefolgt von Deinstallation älterer Versionen von PostgreSQL Mine war 10. Beachten Sie, dass das Deinstallationsprogramm möglicherweise eine Warnung ausgibt, dass Ordner nicht gelöscht werden C:\PostgreSQL\10\data. Deshalb haben wir den nächsten Schritt mit rimraf, um den Ordner und seine Unterordner dauerhaft zu löschen.

Wechseln Sie in das PostgreSQL-Installationsverzeichnis und führen Sie den Befehl aus rimraf 10. 10 ist ein Verzeichnisname. Beachten Sie, dass Sie Ihre ältere Version von PostgreSQL verwenden, dh 9.5 oder so.

Fügen Sie nun C:\PostgreSQL\pg11\bin, C:\PostgreSQL\pg11\libdie Windows-Umgebungsvariablen hinzu. Beachten Sie, dass meine neu installierte Version 11 ist, weshalb ich sie verwende pg11.

Navigieren Sie zu C:\PostgreSQL\data\pg11und öffnen Sie dann postgresql.confBearbeiten port = 5433zuport = 5432

Das ist es. Öffnen Sie cmd und geben Sie einpsql -U postgres

Mit dem Befehl können Sie jetzt alle Ihre gesicherten Datenbanken einzeln wiederherstellen pg_restore -U $username --dbname=$databasename $filename


0

Meine Lösung für das Upgrade von Postgresql 11 auf Postgresql 12 unter Windows 10 lautet wie folgt.

Als erste Bemerkung müssen Sie in der Lage sein, den Postgresql-Dienst zu stoppen und zu starten. Sie können dies mit den folgenden Befehlen in Powershell tun.

Anfang: pg_ctl start -D “d:\postgresql\11\data”

Halt: pg_ctl stop -D “d:\postgresql\11\data”

Status: pg_ctl status -D “d:\postgresql\11\data”

Es ist ratsam, vor dem Upgrade ein Backup zu erstellen. Die Postgresql 11-Instanz muss ausgeführt werden. Dann kopieren Sie die Globals

pg_dumpall -U postgres -g -f d:\bakup\postgresql\11\globals.sql

und dann für jede Datenbank

pg_dump -U postgres -Fc <database> > d:\backup\postgresql\11\<database>.fc

oder

pg_dump -U postgres -Fc -d <database> -f d:\backup\postgresql\11\<database>.fc

Wenn dies noch nicht geschehen ist, installieren Sie Postgresql 12 (da auch Postgresql 11 installiert ist, befindet sich dies auf Port 5433).

Führen Sie dann das Upgrade wie folgt durch:

1) Beenden Sie den Postgresql 11-Dienst (siehe oben).

2) Bearbeiten Sie die postgresql.confDatei in d:\postgresql\12\dataund wechseln Sie port = 5433zuport = 5432

3) Bearbeiten Sie den Pfad der Windows-Benutzerumgebung (geben Sie windows startdann einenv ), um auf Postgresql 12 anstelle von Postresql 11 zu verweisen

4) Führen Sie das Upgrade durch, indem Sie den folgenden Befehl eingeben.

pg_upgrade `
-b c:\program files\postgresql\11\bin `
-B c:\program files\postgresql\12\bin `
-d d:\postgresql\11\data `
-D d:\postgresql\12\data --username=postgres

(Verwenden Sie in Powershell Backtick (oder Backquote), um den Befehl in der nächsten Zeile fortzusetzen.)

5) und starten Sie schließlich den neuen Postgresql 12-Dienst

pg_ctl start -D “d:\postgresql\12\data”


-1

Ich denke, dies ist der beste Link für Ihre Lösung, um Postgres auf 9.6 zu aktualisieren

https://sandymadaan.wordpress.com/2017/02/21/upgrade-postgresql9-3-9-6-in-ubuntu-retaining-the-databases/
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.