【问题标题】:Unable to start postgresql service on CentOS 7CentOS 7 无法启动 postgresql 服务
【发布时间】:2016-05-31 07:02:42
【问题描述】:

无法在 CentOS 7 上启动 postgresql-9.5。

我关注了这个页面 - https://wiki.postgresql.org/wiki/YUM_Installation - 在 CentOS 上安装数据库服务器。

我在设置setenforce 0 后尝试了同样的方法,但也没有用。

我正在以root 的身份进行所有操作。

systemctl start postgresql-9.5.service
Job for postgresql-9.5.service failed because the control process exited with error 
code. See "systemctl status postgresql-9.5.service" and "journalctl -xe" for details.

这就是我得到的状态 -

Redirecting to /bin/systemctl status  postgresql-9.5.service
● postgresql-9.5.service - PostgreSQL 9.5 database server
   Loaded: loaded (/usr/lib/systemd/system/postgresql-9.5.service; enabled; vendor preset: disabled)
   Active: failed (Result: exit-code) since Thu 2016-02-18 15:20:30 EST; 2min 28s ago
  Process: 15041 ExecStartPre=/usr/pgsql-9.5/bin/postgresql95-check-db-dir ${PGDATA} (code=exited, status=1/FAILURE)

Feb 18 15:20:30 myserver systemd[1]: Starting PostgreSQL 9.5 database server...
Feb 18 15:20:30 myserver systemd[1]: postgresql-9.5.service: control process exited, code=exited status=1
Feb 18 15:20:30 myserver systemd[1]: Failed to start PostgreSQL 9.5 database server.
Feb 18 15:20:30 myserver systemd[1]: Unit postgresql-9.5.service entered failed state.
Feb 18 15:20:30 myserver systemd[1]: postgresql-9.5.service failed.

而不同的conf文件内容如下——

[root@myserver /]# cat /etc/ld.so.conf.d/postgresql-pgdg-libs.conf
/usr/pgsql-9.5/lib/

[root@myserver /]# cat /usr/lib/tmpfiles.d/postgresql-9.5.conf
d /var/run/postgresql 0755 postgres postgres -

[root@myserver /]# cat /usr/pgsql-9.5/share/postgresql-9.5-libs.conf
/usr/pgsql-9.5/lib/

[root@myserver /]# cat /etc/alternatives/pgsql-ld-conf
/usr/pgsql-9.5/lib/

[root@myserver /]# cat /var/lib/alternatives/pgsql-ld-conf
auto
/etc/ld.so.conf.d/postgresql-pgdg-libs.conf

/usr/pgsql-9.5/share/postgresql-9.5-libs.conf
950

搜索了我看到的错误。 许多人都看到了相同的错误,并且每种情况的根本原因都不同。阅读这些帖子,我不清楚我是否看到了任何已报告的原因。

【问题讨论】:

    标签: linux postgresql centos centos7 rhel


    【解决方案1】:

    guide 中所述,请确保您已正确安装所有软件包并在安装前更新了 yum 存储库部分 [base][updates]。我们有 CentOS 7 和 PostgreSQL 9.5,它可以通过以下步骤完美运行:

    vi /etc/yum.repos.d/CentOS-Base.repo
    yum localinstall http://yum.postgresql.org/9.5/redhat/rhel-7-x86_64/pgdg-centos95-9.5-2.noarch.rpm
    yum list postgres*
    yum install -y postgresql95-server.x86_64 postgresql95-contrib.x86_64 postgresql95-libs.x86_64 
    /usr/pgsql-9.5/bin/postgresql95-setup initdb
    systemctl enable postgresql-9.5.service
    systemctl start postgresql-9.5.service 
    

    最后,systemctl status postgresql-9.5.service 应该会显示如下内容:

    postgresql-9.5.service - PostgreSQL 9.5 database server
       Loaded: loaded (/usr/lib/systemd/system/postgresql-9.5.service; enabled)
       Active: active (running) since Fri 2016-02-19 00:01:13 UTC; 6min ago
      Process: 10809 ExecStart=/usr/pgsql-9.5/bin/pg_ctl start -D ${PGDATA} -s -w -t 300 (code=exited, status=0/SUCCESS)
      Process: 10802 ExecStartPre=/usr/pgsql-9.5/bin/postgresql95-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS)
     Main PID: 10811 (postgres)
       CGroup: /system.slice/postgresql-9.5.service
               ├─10811 /usr/pgsql-9.5/bin/postgres -D /var/lib/pgsql/9.5/data
               ├─10812 postgres: logger process   
               ├─10814 postgres: checkpointer process   
               ├─10815 postgres: writer process   
               ├─10816 postgres: wal writer process   
               ├─10817 postgres: autovacuum launcher process   
               └─10818 postgres: stats collector process 
    

    【讨论】:

    • 神奇的线是这样的 - # /usr/pgsql-9.5/bin/postgresql95-setup initdb。谢谢 :)。如果service <name> initdb 不起作用,该指南将上述行作为替代。但是,没有关于如果它确实有效的输出会是什么样子的指导。就我而言,我使用了service <name> initdb,它只是让我回到了命令提示符。我最终发现,它不起作用。
    • 完美..正是我想要的
    • 对我来说,神奇的线条是-[ /usr/pgsql-9.5/bin/postgresql95-setup initdb] 和 [systemctl enable postgresql-9.5.service]
    • 在我的例子中,initdb-script 是由非 root 用户(postgresql 用户)执行的。该脚本将在 $PGDATA 文件夹中创建一个文件夹“pg_log”,然后退出而不执行任何其他操作。从数据文件夹中删除所有内容后,我能够以 root 身份执行 initdb 并且一切正常。 (从 data/ 中删除只有在您可以恢复数据或您的设置非常新的情况下才有意义;))
    【解决方案2】:

    最常见的问题是数据库集群未初始化。您可以通过使用 initdb 命令运行 postgresql-XX-setup 脚本来轻松初始化它,例如

    sudo /usr/pgsql-11/bin/postgresql-11-setup initdb
    

    然后启动 Postgres 服务,例如

    sudo systemctl start postgresql-11
    

    【讨论】:

      【解决方案3】:

      这些步骤在我们的测试服务器上帮助了我。

      通过 SSH 连接您的服务器。

      然后切换用户:

      sudo su - postgres
      

      检查 Postgres 状态:

      pg_ctl status
      

      停止数据库:

      pg_ctl stop 
      

      检查是否不存在服务器进程:

      ps axf | grep postg
      

      启动 Postgres 服务:

      sudo systemctl start postgresql.service 
      

      sudo systemctl start postgresql
      

      然后查看状态:

      systemctl status postgresql.service ИЛИ systemctl status postgresql
      

      【讨论】:

        猜你喜欢
        • 2015-02-24
        • 1970-01-01
        • 2020-07-12
        • 2016-09-24
        • 2015-07-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-06-23
        相关资源
        最近更新 更多