【问题标题】:Centos 7 environment variables for Postgres servicePostgres 服务的 Centos 7 环境变量
【发布时间】:2015-01-07 00:48:52
【问题描述】:

最近我遇到了使用自定义 PGDATA 路径启动 postgresql 服务的问题。它试图查看未初始化的默认数据目录(/var/lib/pgsql/9.3/data/),因此触发了这些错误。看来问题是 Centos 7 上的服务启动器剥离了所有环境变量,包括 PGDATA。

Interesting thread on the issue

有没有办法配置

service postgresql-9.3 start

使用自定义环境变量?是否有必须定义这些变量的服务的配置文件?

提前谢谢你!

【问题讨论】:

  • 正如该链接所述,一般机制是服务初始化文件在运行时从/etc/default/$servicename 获取文件,您可以在那里配置变量。 pgsql 初始化脚本会这样做吗?我不知道你得看看。
  • 我在 /etc/default/ 目录中只有 [grub nss useradd] 文件。我是否必须相应地在该目录中制作一个特殊的 postgresql-9.3 脚本?
  • 你需要查看 postgresql init.d 文件。查看它是否在/etc/default 目录中查找文件,然后使用任何变量/等创建该文件。你需要。 grep /etc/rc.d/init.d/postgresql-9.3 /default 可能是一个好的开始。
  • 我对 /etc/rc.d/init.d/postgresql 进行了更改,它对我有用。我想我是从github.com/postgres/postgres/blob/master/contrib/start-scripts/…
  • 我按照 /usr/lib/systemd/system/postgresql-9.3.service 的 cmets 中的说明创建了文件 /etc/systemd/system/postgresql-9.3.service 并设置了 PGDATA 变量那里。由于某种原因,它仍然不想接受这个变量。

标签: linux postgresql centos postgresql-9.3 centos7


【解决方案1】:

感谢上面的回答,我们今天刚刚遇到了这个变化。您也可以保留默认设置,只覆盖 PGDATA 变量,方法是将以下内容放入 /etc/systemd/system/postgresql-9.3.service

# Include the default config:
.include /lib/systemd/system/postgresql-9.3.service

[Service]
Environment=PGDATA=<your path here>/pgsql/9.3/data

这消除了将 /usr/lib/systemd/system/postgresql-9.3.service 中的更改重新集成回本地副本的需要。

【讨论】:

  • 此解决方案是更好的答案,因为它将所有更改保留在原始服务文件中。
  • 这里还需要systemctl daemon-reload
  • 代表什么?
  • @KannanRamamoorthy 这表示您希望存储数据库文件的路径,通常是不同的驱动器,以免空间不足。
【解决方案2】:

好的,我找到了适合我的解决方案。

nano /etc/systemd/system/postgresql-9.3.service 

从 /usr/lib/systemd/system/postgresql-9.3.service 复制的内容和 PGDATA 变量已更改。那么

systemctl daemon-reload

然后我正常启动了服务,它工作正常。诀窍是更改此服务配置文件。

【讨论】:

  • 不是一个非常优雅的解决方案,更像是一个 hack,但它确实有效
猜你喜欢
  • 2019-07-21
  • 1970-01-01
  • 2015-09-11
  • 1970-01-01
  • 2011-06-21
  • 1970-01-01
  • 2014-02-10
  • 2018-06-21
  • 2011-04-22
相关资源
最近更新 更多