Postgres 9.5-main.pg_stat_tmp:そのようなファイルまたはディレクトリはありません


0

数か月前に(詳細を忘れてしまったために)さまざまな状況下でこの問題に遭遇しました。この問題をグーグルで検索した場合、同様の投稿が多数ありますが、満足のいく結論の多くに到達するものはありません。単に許可ベースである場合を除き、これがそうであることを確認するのに苦労しています。

データベースの復元が必要と判断された場合に実行される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

回答:


3

解決策:実行

mkdir -p /var/run/postgresql/9.5-main.pg_stat_tmp
chown postgres /var/run/postgresql/9.5-main.pg_stat_tmp
chgrp postgres /var/run/postgresql/9.5-main.pg_stat_tmp

説明してください。OPからDockerの下にあるという表示はありません。
パトリックメヴゼク

パスは、PostgreSQLがLinuxマシンにインストールされていることを示しています。エラーは一時ファイルがないことを教えてくれるので、最も簡単な解決策はこのファイルを作成して必要な許可を与えることです。
-pbo

編集する前に、あなたの答えはDockerfile ...の指示のように見えた
パトリックMevzek

おそらくあなたは私には速すぎました;)私はこのソリューションを2回テストしましたが、この場合は役立つはずです。
pbo

これでうまくいきましたが、なぜ一時ファイルが最初に見つからないのですか?何を作成する必要がありますか?
ヨハン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.