Der alte Postmaster kann beim Upgrade auf Postgres 9.2 nicht heruntergefahren werden


13

Ich aktualisiere auf Postgres 9.2.2 (von 9.1.4). Wenn ich versuche, die DBs zu aktualisieren, verwenden Sie:

pg_upgrade -b /usr/local/Cellar/postgresql/9.1.4/bin -B /usr/local/Cellar/postgresql/9.2.2/bin -d /usr/local/var/postgres91 -D /usr/local/var/postgres

Ich erhalte folgende Fehlermeldung:

Performing Consistency Checks
-----------------------------
Checking current, bin, and data directories                 ok

There seems to be a postmaster servicing the old cluster.
Please shutdown that postmaster and try again.
Failure, exiting

Ich habe versucht, den Server zu stoppen, kann den Upgrade-Befehl jedoch nicht ausführen. Wie kann ich den alten Postmaster herunterfahren?

Antworten:


11

Das postmaster.pidsollte sich im usr/local/varOrdner der Vorgängerversion befinden . Durch einfaches Umbenennen dieser Datei wird das Problem behoben.


Ich bin auch ein paar Mal auf dieses Problem gestoßen, und das ist eine gute Antwort. Das Stoppen aller Instanzen von postgres vor dem Upgrade sollte ebenfalls relevant sein
Jerome

4

In OS X Yosemite nach der Installation von PostgreSQL über Homebrew:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
rm ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist

1
Dies behebt das Problem nicht. Wenn Sie pg_ctl -D /usr/local/var/postgres/ stopzurückkehren No such process, sollten Sie rm /usr/local/var/postgres/postmaster.pid.
Andrew

1

Auf den meisten Unix-Systemen finden Sie ein Init-Skript, mit /etc/init.ddem Sie Unix-Dienste starten, neu starten, neu laden oder stoppen können.

z.B

sudo /etc/init.d/postgresql stop

Wenn dies nicht verfügbar ist, können Sie verwenden pg_ctl stop

z.B

su - postgres
bash-3.1$ pg_ctl stop  # normal stop
bash-3.1$ pg_ctl stop -m s # smart stop
bash-3.1$ pg_ctl stop -m f # fast stop
bash-3.1$ pg_ctl stop -m i # immediate stop

Mehr über pg_ctl

http://www.postgresql.org/docs/9.1/static/app-pg-ctl.html

BEARBEITEN Wenn der Fehler weiterhin auftritt und Sie sicher sind, dass der Postmaster nicht mehr ausgeführt wird (prüfen Sie mit sudo ps aux | grep "postmaster"- sollte nur eine Zeile zurückgeben), haben Sie nach einem unsauberen Herunterfahren immer noch die PID-Datei

Entfernen Sie die PID-Datei, z

> sudo -u postgres mv /var/lib/postgres/data-9.1/postmaster.pid /tmp

1
Wenn ich versuche pg_ctl stop, erhalte ich: pg_ctl: no database directory specified and environment variable PGDATA unset. BTW, scheint kein Server ausgeführt werden: luciano$ ps auxwww | grep postgresluciano 995 0.0 0.0 2434892 548 s000 R+ 10:42PM 0:00.00 grep postgres.
Luciano

grep für Postmeister

Aktualisierte Antwort mit weiteren Informationen

Kein Glück:sudo ps aux | grep "postmaster" luciano 3101 0.0 0.0 2434892 548 s002 S+ 9:12PM 0:00.00 grep postmaster
Luciano

Problem gelöst. Siehe meine Antwort.
Luciano

0

Beenden Sie unter Ubuntu den PostgreSQL-Dienst, bevor Sie das Upgrade durchführen. Dies stoppt alle Postgres-Instanzen, unabhängig von der installierten Version.

service postgresql stop

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.