web-dev-qa-db-ja.com

再起動後に/ var / run / postgresqlがない

Centos7マシンをセットアップしていて、再起動後にpostgresが起動しないという問題があります。サービスを手動で実行しようとしても、

UTC FATAL:  could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": No such file or directory

よく見ると、/var/run/postgresqlは、再起動後に存在するイベントではありません。

私の研究で明確な答えが見つからなかったので、いくつかの質問が本当にありました。

/ var/run内のディレクトリはいつどのように作成されますか?それは、サービスの開始時に作成されるものですか、それともその方法は何ですか?

この特定の問題が発生し、再起動後にpostgresが起動しない原因は何ですか?

私はこれまでにこの動作を見たことはありませんが、公平を期して私はこれまでほとんどubuntuを使用してきました。

ありがとう

4
iblazevic

システムで/var/runを調べると、実際には/runへのシンボリックリンクであることがわかります。

# ls -ld /var/run
lrwxrwxrwx. 1 root root 6 Jan 19 09:12 /var/run -> ../run

そして、/runを調べると、実際にはtmpfsマウントポイントであることがわかります。

# mount | grep /run
tmpfs on /run type tmpfs (rw,nosuid,nodev,seclabel,mode=755)

tmpfsファイルシステムはメモリ内ファイルシステムです。システムを再起動すると、そこにあるものはすべて消えます。 Federicoがコメントで述べているように、CentOS 7(およびFedora、RHEL 7など)はsystemd-tmpfiles機能を使用して、システムの起動時にロックディレクトリやその他の一時的なストレージの場所などを自動的に作成します。

CentOS 7に含まれているpostgresql-serverパッケージは、すでに正しいことをしています。

# rpm -ql postgresql-server | grep tmpfiles
/usr/lib/tmpfiles.d/postgresql.conf

# cat /usr/lib/tmpfiles.d/postgresql.conf
d /var/run/postgresql 0755 postgres postgres -

サードパーティのpostgresqlパッケージを使用している場合でも、CentOSと正しく統合されていないことに驚かないでください。手動で修正するには、ここに示す同じtmpfiles.dエントリを設定します。

9
larsks

Unix_socket_directories = '/ tmp'#ディレクトリのカンマ区切りリストをpostgresql設定ファイルに追加します。ファイルはどこかにあるはずです(RHEL 7.xおよびCentOS 7.x)

/var/lib/pgsql/9.5/data/postgresql.conf

または

/var/lib/pgsql/data/postgresql.conf

次にサーバーを再起動すると、postgresqlサービスが問題なく起動するはずです。

0
Vim