PostgreSQL 18 中文参考文档(未翻译部分保留英文)🌐 切换到英文原版 →

18.3. 启动数据库服务器 #

18.3.1. 服务启动失败排查
18.3.2. 客户端连接故障排查

在客户端能够发起连接之前,必须首先拉起数据库后台监听服务。核心主服务程序名为 postgres。

最基础的手动启动方式是直接调用二进制程序并指定数据目录:

$ postgres -D /usr/local/pgsql/data >logfile 2>&1 &

若未指定 -D,服务会自动读取环境变量 PGDATA 的路径配置。

为了简化启动与后台转储管理,官方提供了高级控制管理工具 pg_ctl:

pg_ctl start -l logfile -D /usr/local/pgsql/data

它不仅能在后台安全拉起服务并接管标准输出日志,还提供了查询运行状态(pg_ctl status)以及安全关闭实例的能力。

在生产服务器上,推荐将服务托付给操作系统的服务管理器(如 Linux 的 systemd)。示例服务配置文件(/etc/systemd/system/postgresql.service)如下:

[Unit]
Description=PostgreSQL Database Server
After=network.target

[Service]
Type=notify
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=120

[Install]
WantedBy=multi-user.target

18.3.1. 服务启动失败排查 #

最常见的服务启动失败根因包括:端口被既有进程占用、数据目录属主权限错误、共享内存或信号量资源耗尽,或配置参数语法错误。请检查服务器日志以定位根本原因。

18.3.2. 客户端连接故障排查 #

如果客户端无法连接,请确认 listen_addresses 已配置为允许外部连接,操作系统防火墙已放行对应端口,且 pg_hba.conf 中包含允许该来源主机的规则。