数か月前に(詳細を忘れてしまったために)さまざまな状況下でこの問題に遭遇しました。この問題をグーグルで検索した場合、同様の投稿が多数ありますが、満足のいく結論の多くに到達するものはありません。単に許可ベースである場合を除き、これがそうであることを確認するのに苦労しています。
データベースの復元が必要と判断された場合に実行されるDebian init.dスクリプトからpostgresサービスを停止および開始しています。
問題なく停止します。
systemctl stop postgresql
復元操作はスムーズに実行されます(pgbackrest、リモートでホストされるスタンザバックアップ):
sudo -u postgres bash -c "pgbackrest --log-level-console=info --stanza=$stanza --delta restore"
次に、デバッグまたはログが生成されずに開始操作がハングします。
systemctl start postgresql
systemctlの呼び出しをpostgresの直接呼び出しに置き換えた場合:
sudo -u postgres bash -c "/usr/lib/postgresql/9.5/bin/postgres -D /var/lib/postgresql/9.5/main -c config_file=/etc/postgresql/9.5/main/postgresql.conf
次のエラーが表示されます(タイムスタンプは無視してください。これは私が使用しているテストボックスです)。
2016-11-03 17:30:27 UTC [2511-3] FATAL: could not open directory "/var/run/postgresql/9.5-main.pg_stat_tmp": No such file or directory
次に指摘することは、Postgres 9.5と9.6の両方がシステム上に共存し、9.6インスタンスがsystemctl呼び出し(設定されたすべてのクラスターを開始する)を介して正常に停止および開始することです。不合格?本当に必要なのは、このファイルを作成することだけである場合、エラーの理由は表示されません。または、エラーはおそらくRed Herringですか?
TEST-RIG-postgres@CIE-4096:/root$ ls -l /var/run/postgresql/
total 4
drwxr-s--- 2 postgres postgres 100 Nov 3 17:36 9.6-main.pg_stat_tmp
-rw-r--r-- 1 postgres postgres 5 Nov 3 17:20 9.6-main.pid
ls -l /var/run/
...
drwxrwsr-x 3 postgres postgres 120 Nov 3 17:30 postgresql
私はこれに少し迷っています。システム初期化中に呼び出されたためでしょうか(Postgresは通常正常に起動します)?LSBセクションに以下を追加しましたが、違いはありません。
# Required-Start: postgresql