You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu系统PostgreSQL 11启动失败(pg_ctl报错)排查咨询

PostgreSQL 11启动失败(pg_ctl: could not start server)排查方案

以下是针对Ubuntu系统中PostgreSQL 11启动失败的具体排查步骤:

  • 检查数据目录权限
    默认数据目录为/var/lib/postgresql/11/main,执行命令查看权限:

    ls -ld /var/lib/postgresql/11/main
    

    目录必须归postgres用户及用户组所有,权限需设为700。若不符合,执行以下命令修正:

    chown -R postgres:postgres /var/lib/postgresql/11/main
    chmod 700 /var/lib/postgresql/11/main
    
  • 查看完整日志细节
    默认日志路径通常是/var/log/postgresql/postgresql-11-main.log,启动失败的核心报错往往藏在日志末尾,执行命令查看最近50行:

    tail -n 50 /var/log/postgresql/postgresql-11-main.log
    

    重点关注FATAL或ERROR开头的行,这是定位问题的关键。

  • 手动以postgres用户启动调试
    切换到postgres用户手动启动,能生成更详细的调试日志:

    su - postgres
    pg_ctl start -D /var/lib/postgresql/11/main -l /tmp/pg_debug.log
    

    之后查看/tmp/pg_debug.log文件,里面会包含启动过程中的所有细节报错。

  • 检查端口占用情况
    PostgreSQL默认使用5432端口,执行命令检查是否被其他进程占用:

    ss -tulpn | grep 5432
    

    若有占用,可杀掉对应进程,或修改postgresql.conf中的port参数更换端口。

  • 排查配置文件错误
    备份当前配置后,尝试用默认配置启动,排查是否是配置参数错误导致:

    cp /var/lib/postgresql/11/main/postgresql.conf /var/lib/postgresql/11/main/postgresql.conf.bak
    cp /usr/share/postgresql/11/postgresql.conf.sample /var/lib/postgresql/11/main/postgresql.conf
    

    之后重新启动服务,若能正常启动,再逐步对比原配置找出问题参数。

  • 检查系统资源限制
    查看postgres用户的文件句柄限制:

    su - postgres -c "ulimit -n"
    

    PostgreSQL需要至少1000以上的文件句柄,若不足,编辑/etc/security/limits.conf添加:

    postgres soft nofile 65536
    postgres hard nofile 65536
    

    保存后重启系统生效。

  • 检查磁盘空间
    确认数据目录所在磁盘是否已满:

    df -h /var/lib/postgresql
    

    若磁盘使用率达100%,清理冗余文件释放空间后再尝试启动。

内容的提问来源于stack exchange,提问作者user1156544

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 13:26:01