• pg无法启动


    现象:

    [root@pg ~]# systemctl status postgresql
    ● postgresql.service - PostgreSQL 9.6.24 database server
       Loaded: loaded (/usr/lib/systemd/system/postgresql.service; enabled; vendor preset: disabled)
       Active: failed (Result: exit-code) since Wed 2023-11-08 11:15:14 CST; 13s ago
      Process: 26250 ExecStop=/usr/local/pgsql/bin/pg_ctl stop -m fast -w -D /usr/local/pgsql/pgdata (code=exited, status=0/SUCCESS)
      Process: 26267 ExecStart=/usr/local/pgsql/bin/pg_ctl start -w -D /usr/local/pgsql/pgdata -l /usr/local/pgsql/pgdata/pg_log/startup.log (code=exited, status=1/FAILURE)
     Main PID: 23576 (code=exited, status=0/SUCCESS)
    
    Nov 08 11:15:13 pg systemd[1]: Starting PostgreSQL 9.6.24 database server...
    Nov 08 11:15:14 pg systemd[1]: postgresql.service: control process exited, code=exited status=1
    Nov 08 11:15:14 pg systemd[1]: Failed to start PostgreSQL 9.6.24 database server.
    Nov 08 11:15:14 pg systemd[1]: Unit postgresql.service entered failed state.
    Nov 08 11:15:14 pg systemd[1]: postgresql.service failed.
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    从上面的报错中,可以看到:
    1、关闭正常,启动失败
    2、启动日志存放在/usr/local/pgsql/pgdata/pg_log/startup.log文件中

    检查启动日志

    LOG:  redirecting log output to logging collector process
    HINT:  Future log output will appear in directory "pg_log".
    
    • 1
    • 2

    日志重定向到了配置的日志路径中,检查pg的参数文件,确定日志的文件名
    [postgres@pg pgdata]$ cat postgresql.conf

    #self define
    listen_addresses = '*'
    port = 5432
    logging_collector = on
    log_directory = 'pg_log'
    log_filename = 'postgresql-%a.log'
    log_truncate_on_rotation = on
    log_rotation_age = 1d #这个mon文件保留多久才被允许覆盖,第2天产生的Tue了
    log_rotation_size = 0
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    从这里看到,日志目录是pg_log,日志文件名是postgresql-%a.log,这里的%a是星期几的缩写,今天星期三,那么日志文件名就是postgresql-Wed.log

    查看真正的数据库启动日志postgresql-Wed.log

    LOG:  configuration file "/usr/local/pgsql/pgdata/pg_hba.conf" contains no entries
    FATAL:  could not load pg_hba.conf
    LOG:  database system is shut down
    
    • 1
    • 2
    • 3

    从这里可以看到,无法加载pg_hba.conf文件,原因是这个文件中的内容全部被注释,没有可运行的内容。这里面,至少存在一条

    local   all             all                                     trust
    
    • 1

    再次启动,正常

    LOG:  MultiXact member wraparound protections are now enabled
    LOG:  database system is ready to accept connections
    LOG:  autovacuum launcher started
    
    • 1
    • 2
    • 3
  • 相关阅读:
    零售行业新渠道,效率居然这么高?
    访问控制
    浏览器事件循环原理 —— 任务优先级
    【python】如何注释
    linux下无sudo权限安装MatlabR2016
    智能指针面试题
    【基于FreeRTOS的STM32F103系统】Heap_4内存管理机制程序详解
    关于判断点是否位于轮廓内的一点思考
    元宇宙发展下的虚拟时尚
    虚拟机的发展史:从分时系统到容器化
  • 原文地址:https://blog.csdn.net/Melgards/article/details/134285071