重庆思庄Oracle、KingBase、PostgreSQL、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 10|回复: 0
打印 上一主题 下一主题

PostgreSQL 运行状态检查方法

[复制链接]
跳转到指定楼层
楼主
发表于 4 天前 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
在PostgreSQL中,检查数据库运行状态通常分为操作系统层面(检查进程、服务和端口)和数据库层面(检查内部连接、运行时间及活动状态)。

以下是常用的检查命令和语句:

一、 操作系统层面 (OS Level)
在服务器终端(通常是Linux)上执行以下命令,无需登录数据库:

1. 检查服务状态 (Systemd)
如果你的系统使用 systemd 管理 PostgreSQL 服务,这是最直观的检查方式:

Bash
systemctl status postgresql
# 或者指定具体版本,例如:
systemctl status postgresql-14
(如果状态显示为 active (running),则表示服务正在运行。)

2. 检查 PostgreSQL 进程
查看数据库的主进程(postmaster)和后台工作进程是否在运行:

Bash
ps -ef | grep postgres
(正常情况下,你会看到一个主进程 /usr/pgsql-xx/bin/postgres -D /var/lib/pgsql/xx/data,以及多个子进程如 logger, checkpointer, background writer 等。)

3. 检查端口监听状态
PostgreSQL 默认使用 5432 端口。检查该端口是否被正常监听:

Bash
ss -tulnp | grep 5432
# 或者使用 netstat
netstat -tulnp | grep 5432
4. 使用 pg_isready 工具
这是 PostgreSQL 自带的命令行工具,专门用于检查数据库服务器的连接状态:

Bash
pg_isready -h localhost -p 5432
(如果运行正常,会返回类似 localhost:5432 - accepting connections 的信息。)

二、 数据库层面 (Database Level)
使用 psql 登录到数据库后,可以执行以下 SQL 语句来深度检查数据库的运行健康状态:

1. 检查数据库启动时间
查看主服务进程的启动时间,可以借此判断数据库是否发生了意外重启:

SQL
SELECT pg_postmaster_start_time();
2. 检查当前会话与活动状态 (pg_stat_activity)
这是 DBA 最常用的视图,用于查看当前有多少连接,以及它们正在执行什么操作:

SQL
-- 查看当前所有连接的基本状态
SELECT
    datname AS database_name,
    usename AS user_name,
    client_addr AS client_ip,
    state,
    query_start,
    query
FROM pg_stat_activity
WHERE state IS NOT NULL;
状态 (state) 说明:

active: 正在执行查询。

idle: 空闲,等待客户端发送新命令。

idle in transaction: 处于事务中,但当前没有执行查询(需警惕长期处于此状态的连接,可能导致锁阻塞)。

3. 检查数据库是否处于只读/恢复模式 (主备集群检查)
如果你的数据库是主备架构,可以通过以下语句检查当前节点是主库还是备库:

SQL
SELECT pg_is_in_recovery();
(返回 f (false) 表示是主库(可读写),返回 t (true) 表示是备库(只读/恢复模式)。)

4. 简单连通性与版本检查
最简单的连通性测试,能返回结果说明数据库可以正常响应查询:

SQL
SELECT version();

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2026-4-30 08:53 , Processed in 0.933291 second(s), 21 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表