11

Centos 7 で Postgresql 9.3 サーバーを設定しようとしています (yum 経由のインストール) カスタム ディレクトリ内で、私の場合は起動時にマウントされる暗号化されたパーティション (/custom_container/database) です。ある理由により、Postgresql がマニュアルどおりに動作せず、サービスの起動時にエラーが発生します。

注: 私が設定した PGDATA 環境変数を受け入れたくありません。

su - postgres -c '/usr/pgsql-9.3/bin/initdb'

(PGDATA ディレクトリが postgres:postgres によって所有されている場合) クラスタはデフォルト ディレクトリ /var/lib/pgsql/9.3/data/ 内で初期化されます。

su - postgres -c '/usr/pgsql-9.3/bin/initdb --pgdata=$PGDATA'

私が使用しているカスタムコンテナ内のディレクトリを初期化します。ドキュメントでは PGDATA 変数がデフォルトで使用されると書かれているため、これは私が理解できなかったことです。

問題:実行時

service postgresql-9.3 start

ログにエラーが表示されます

postgresql-9.3.service - PostgreSQL 9.3 database server
Loaded: loaded (/usr/lib/systemd/system/postgresql-9.3.service; disabled)
Active: failed (Result: exit-code) since Mon 2014-11-10 15:24:15 CET; 1s ago
Process: 2785 ExecStartPre=/usr/pgsql-9.3/bin/postgresql93-check-db-dir ${PGDATA} (code=exited, status=1/FAILURE)

Nov 10 15:24:15 CentOS-70-64-minimal systemd[1]: Starting PostgreSQL 9.3 database server...
Nov 10 15:24:15 CentOS-70-64-minimal postgresql93-check-db-dir[2785]: "/var/lib/pgsql/9.3/data/" is missing or empty.
Nov 10 15:24:15 CentOS-70-64-minimal postgresql93-check-db-dir[2785]: Use "/usr/pgsql-9.3/bin/postgresql93-setup initdb" to initialize t...ster.
Nov 10 15:24:15 CentOS-70-64-minimal postgresql93-check-db-dir[2785]: See %{_pkgdocdir}/README.rpm-dist for more information.
Nov 10 15:24:15 CentOS-70-64-minimal systemd[1]: postgresql-9.3.service: control process exited, code=exited status=1
Nov 10 15:24:15 CentOS-70-64-minimal systemd[1]: Failed to start PostgreSQL 9.3 database server.
Nov 10 15:24:15 CentOS-70-64-minimal systemd[1]: Unit postgresql-9.3.service entered failed state.

つまり、クラスタが新しい $PGDATA ディレクトリ (/custom_container/database) で初期化されていても、Postgresql は引き続き /var/lib/pgsql/9.3/data/ でクラスタを探します。

以前にこの Postgresql の動作を経験した人はいますか? 特定の設定オプションを忘れたのか、Postgresql のインストールに問題があるのでしょうか?

前もって感謝します!

4

5 に答える 5

6

本当の問題は、次のスレッドで作業した環境変数の設定にあったようです: Postgres サービス の Centos 7 環境変数 問題は、カスタム /etc/systemd/system/postgresql-9.3.service 内に設定された PGDATA 変数です。デフォルトの PGDATA 変数を使用する /usr/lib/systemd/system/postgresql-9.3.service の内容から作成する必要があります。

于 2014-11-10T17:17:11.943 に答える
3

これを試して:

 ## Login with postgres user
 su - postgres
 export PGDATA=/your_path/data
 pg_ctl -D $PGDATA start &
于 2014-11-10T15:22:13.447 に答える