我有CentOS 7,需要设置PostgreSQL 9.2.23。
我已执行以下步骤:
1)下载postgres:
$ yum install -y postgresql postgresql-devel postgresql-contrib postgresql-libs postgresql-server
2)创建/mnt/beegfs/db/pgsql/data
目录以存储数据库集群(我在/ var上只有5 Gb可用空间,因此更喜欢将它存储在/ home,我有更多空间):
$ mkdir -p /mnt/beegfs/db/pgsql/data
$ chown postgres:postgres /mnt/beegfs/db/pgsql -R
3)允许密码验证并将/mnt/beegfs/db/pgsql/data
设置为存储数据库集群的目录:
$ export PGSETUP_INITDB_OPTIONS="--auth-host=md5 --pgdata=/mnt/beegfs/db/pgsql/data/ -E 'UTF-8' --lc-collate='en_US.UTF-8' --lc-ctype='en_US.UTF-8'"
4)初始化Postgres数据库并启动PostgreSQL:
$ postgresql-setup initdb
Initializing database … failed, see /var/lib/pgsql/initdb.log
根据/var/lib/pgsql/initdb.log
,一切正常,但必须使用/usr/bin/postgres -D /mnt/beegfs/db/pgsql/data
或/usr/bin/pg_ctl -D /mnt/beegfs/db/pgsql/data -l logfile start
启动服务器。
5)使用postgres用户启动服务器(它不能与root一起使用):
$ su - postgres
$ pg_ctl -D /mnt/beegfs/db/pgsql/data start
$ logout
6)启动守护程序:
$ systemctl start postgresql
Job for postgresql.service failed because the control process exited with error code. See “systemctl status postgresql.service” and “journalctl -xe” for details.
$ systemctl status postgresql.service
● postgresql.service – PostgreSQL database server
Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) since vie 2017-10-27 13:38:41 CEST; 20s ago
Process: 1465 ExecStartPre=/usr/bin/postgresql-check-db-dir ${PGDATA} (code=exited, status=1/FAILURE)
oct 27 13:38:41 nodo00 systemd[1]: Starting PostgreSQL database server…
oct 27 13:38:41 nodo00 systemd[1]: postgresql.service: control process exited, code=exited status=1
oct 27 13:38:41 nodo00 systemd[1]: Failed to start PostgreSQL database server.
oct 27 13:38:41 nodo00 systemd[1]: Unit postgresql.service entered failed state.
oct 27 13:38:41 nodo00 systemd[1]: postgresql.service failed.
我一直试图从几个论坛尝试可能的解决方案而没有任何成功。
我很欣赏这个问题的任何暗示。
提前致谢
修改
删除所有文件后,我再次从scracth开始。
步骤3)完全无用,所以我没有执行它。相反,我使用以下内容创建了文件/etc/systemd/system/postgresql.service
:
.include /usr/lib/systemd/system/postgresql.service
[Service]
Environment=PGDATA=/mnt/beegfs/db/pgsql/data
然后,在运行systemctl daemon-reload
之后,
步骤4)结束" OK",步骤5)被跳过,步骤6)运行没有错误。