web-dev-qa-db-ja.com

Postgres 9.2へのアップグレード時に古いpostmasterをシャットダウンできない

Postgres 9.2.2(9.1.4から)にアップグレードしています。以下を使用してDBをアップグレードしようとすると:

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

次のエラーメッセージが表示されます。

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

サーバーを停止しようとしましたが、アップグレードコマンドが機能しません。古いポストマスターをシャットダウンする方法は?

13
Luciano

postmaster.pidは、以前のバージョンのusr/local/varフォルダー内にある必要があります。このファイルの名前を変更するだけで問題が解決するはずです。

11
Luciano

OS X Yosemiteで、Homebrewを介してPostgreSQLをインストールした後:

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

ほとんどのUNIXシステムでは、/etc/init.dに初期化スクリプトがあり、UNIXサービスの開始、再起動、再読み込み、または停止に使用できます。

例えば.

Sudo /etc/init.d/postgresql stop

これが利用できない場合は、pg_ctl stopを使用できます

例えば.

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

pg_ctlの詳細

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

[〜#〜] edit [〜#〜]それでもエラーが発生し、postmasterが実行されていないことが確かな場合(Sudo ps aux | grep "postmaster"-1行だけを返す必要があります)クリーンシャットダウン後もpidファイルが残っています

Pidfileを削除します。

> Sudo -u postgres mv /var/lib/postgres/data-9.1/postmaster.pid /tmp
1
Michel Feldheim

Ubuntuでは、アップグレードを実行する前にPostgreSQLサービスを停止します。これにより、インストールされているバージョンに関係なく、postgresのすべてのインスタンスが停止します。

service postgresql stop

0
scarver2