PostgreSQL、MongoDB 与 Elasticsearch¶
这个页面补充常见数据库和搜索中间件的排查命令,适合连接失败、性能异常、磁盘占用、集群健康和索引问题。
PostgreSQL¶
# 查看服务状态
systemctl status postgresql
# 查看监听端口
ss -tulnp | grep ':5432'
# 连接数据库
psql -h 127.0.0.1 -p 5432 -U postgres
# 查看版本
psql -U postgres -c "SELECT version();"
常用 SQL:
-- 查看连接
SELECT pid, usename, client_addr, state, query
FROM pg_stat_activity
ORDER BY query_start DESC;
-- 查看最大连接数
SHOW max_connections;
-- 查看数据库大小
SELECT datname, pg_size_pretty(pg_database_size(datname))
FROM pg_database;
-- 查看慢查询扩展是否可用
SELECT * FROM pg_extension;
常见问题:
- 连接数耗尽。
- 认证规则
pg_hba.conf不匹配。 - 磁盘满。
- 长事务或锁等待。
MongoDB¶
# 查看服务状态
systemctl status mongod
# 查看监听端口
ss -tulnp | grep ':27017'
# 连接
mongosh
# 查看日志
tail -n 100 /var/log/mongodb/mongod.log
常用命令:
// 查看状态
db.serverStatus()
// 查看数据库
show dbs
// 查看集合
show collections
// 查看当前操作
db.currentOp()
// 查看慢查询配置
db.getProfilingStatus()
常见问题:
- 认证失败。
- 副本集状态异常。
- 磁盘空间不足。
- 慢查询或索引缺失。
Elasticsearch¶
# 查看服务状态
systemctl status elasticsearch
# 集群健康
curl -s http://127.0.0.1:9200/_cluster/health?pretty
# 节点
curl -s http://127.0.0.1:9200/_cat/nodes?v
# 索引
curl -s http://127.0.0.1:9200/_cat/indices?v
# 分片
curl -s http://127.0.0.1:9200/_cat/shards?v
常见问题:
- 集群 yellow/red。
- 分片未分配。
- 磁盘水位触发只读。
- JVM heap 使用过高。
- 索引过多或分片过多。
通用排查顺序¶
- 服务是否运行。
- 端口是否监听。
- 本机连接是否成功。
- 认证和访问控制是否正确。
- 磁盘、内存、连接数是否达到上限。
- 查看错误日志和慢查询。