我试图在一个自定义目录(在我的情况下是在启动时加载的一个encryption分区(/ custom_container /数据库))在Centos 7(通过yum安装)上设置Postgresql 9.3服务器。 由于某种原因,Postgresql在手册中的行为不像应该在服务启动时出现错误。
注意:它不想接受我设置的PGDATA环境variables,并且在运行时
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'
初始化我正在使用的自定义容器内的目录。 这是我无法弄清楚的,因为文档说PGDATAvariables是默认的。
问题:运行时
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的行为? 难道是我忘记了某些configuration选项,或者问题来自Postgresql安装?
先谢谢你!
看来真正的问题是设置环境变量,我在以下线程中工作: 用于Postgres服务的Centos 7环境变量问题是在自定义/etc/systemd/system/postgresql-9.3.service中设置的PGDATA变量应该使用默认的PGDATA var的/usr/lib/systemd/system/postgresql-9.3.service的内容来创建。
尝试这个:
## Login with postgres user su - postgres export PGDATA=/your_path/data pg_ctl -D $PGDATA start &
我觉得最“CentOS 7路”做的是复制服务文件:
sudo cp /usr/lib/systemd/system/postgresql-9.6.service /etc/systemd/system/postgresql-9.6.service
然后编辑文件/etc/systemd/system/postgresql-9.6.service :
# Location of database directory Environment=PGDATA=/mnt/volume/var/lib/pgsql/9.6/data/
然后启动sudo systemctl start postgresql-9.6
并验证:
# sudo ps -ax | grep postmaster 32100 ? Ss 0:00 /usr/pgsql-9.6/bin/postmaster -D /mnt/volume/var/lib/pgsql/9.6/data/
尝试编辑文件/etc/init.d/postgresql-9.3:PGDATA = / your / custom / path