この状態を修正するには、データベースクラスターを pg_ctl stop で停止する必要があります。停止が完了したら、LifeKeeper の In Service アクションは成功します。
現象:
PostgreSQL リソースのリストアは、サーバークラッシュのためにデータベースクラスターが正常にシャットダウンしなかった場合、またはシャットダウン時に PostgreSQL サービスがハングアップした場合(ハングアップのシミュレーションに windbg を使用した場合)に失敗する可能性があります。正常にシャットダウンできないと、次回の起動時にデータベースクラスターの復旧処理が強制されます。この復旧処理により、Windows サービスの開始アクションが失敗し、サービスがデータベースクラスターの状態と矛盾した状態になる可能性があります。
不完全なシャットダウン後の起動時に、PostgreSQLは 次のメッセージを(他の多くのログと共に)記録する場合があります。
Waiting for server start up
LOG: database system was interrupted; last known up at 2017-07-25 16:12:10 EDT
FATAL: the database system is starting up
LOG: database system was not properly shut down; automatic recovery in progress
リカバリーが完了すると、PostgreSQL データベースのクラスタープロセスは実行中になりますが、Windows サービスの状態は「停止」になり、LifeKeeper PostgreSQL リソースは失敗した状態になります。 LifeKeeper のリストア処理がデータベースクラスターの稼働中に試行されると、PostgreSQL は次のメッセージを記録します。
FATAL: lock file “postmaster.pid” already exists
HINT: Is another postmaster (PID 3488) running in data directory “E:/PGSQL1”?
推奨する対応:
この状態を修正するには、リカバリーの完了後にデータベースクラスターを pg_ctl stop で停止する必要があります。停止が完了したら、LifeKeeper の In Service アクションは成功します。
このトピックへフィードバック