Skip to content

GaussDB 诊断工具使用

内置诊断工具

gs_check 系统检查工具

bash
# 检查集群状态
gs_check -i cluster

# 检查数据库状态
gs_check -i database

# 检查磁盘空间
gs_check -i disk

# 生成完整检查报告
gs_check -a
  • 检查结果分类:PASS、WARNING、ERROR
  • 详细的错误信息和修复建议
  • 集群整体健康状况评分

gs_ctl 数据库控制工具

bash
# 查看数据库状态
gs_ctl status

# 启动数据库实例
gs_ctl start -D /data/gaussdb/data

# 停止数据库实例
gs_ctl stop -D /data/gaussdb/data

# 重启数据库实例
gs_ctl restart -D /data/gaussdb/data
  • 启动失败的日志分析
  • 无法停止数据库的处理方法
  • 强制停止数据库的风险

gs_stat 性能统计工具

bash
# 查看实时性能统计
gs_stat -p 5432

# 查看历史性能数据
gs_stat -h localhost -p 5432 -d postgres
  • CPU使用率和负载
  • 内存使用情况
  • I/O 统计信息
  • 查询执行统计

性能诊断工具

EXPLAIN 执行计划分析

sql
-- 查看执行计划
EXPLAIN SELECT * FROM table_name WHERE condition;

-- 查看实际执行情况
EXPLAIN ANALYZE SELECT * FROM table_name WHERE condition;
  • 节点类型和执行顺序
  • 成本估算和实际执行时间
  • 索引使用情况
  • 连接方式和顺序

pg_stat_statements 统计信息

sql
-- 启用扩展
CREATE EXTENSION pg_stat_statements;

-- 查看统计信息
SELECT query, calls, total_time, rows FROM pg_stat_statements ORDER BY total_time DESC LIMIT 10;

-- 重置统计信息
SELECT pg_stat_statements_reset();
  • 调用次数和总执行时间
  • 平均执行时间和最大执行时间
  • 返回行数和共享缓冲区命中率

gs_probackup 备份恢复工具

bash
# 创建全量备份
gs_probackup backup -B /backup -D /data/gaussdb/data -b full

# 创建增量备份
gs_probackup backup -B /backup -D /data/gaussdb/data -b incremental

# 从备份恢复
gs_probackup restore -B /backup -D /data/gaussdb/data --instance instance_name
  • 查看备份列表
  • 删除过期备份
  • 验证备份完整性

故障排查工具

gs_log 日志分析工具

bash
# 查看数据库日志
gs_log -D /data/gaussdb/data

# 过滤错误日志
gs_log -D /data/gaussdb/data -e error

# 实时监控日志
gs_log -D /data/gaussdb/data -f
  • 错误代码和错误信息
  • 发生时间和相关进程
  • 故障上下文和可能的原因

gsql 交互式查询工具

sql
-- 连接到数据库
gsql -d postgres -U username -p 5432

-- 查看数据库列表\l

-- 查看表列表\dt

-- 查看表结构\d table_name

-- 查看索引\di
  • 执行脚本文件
  • 导出查询结果
  • 自动补全功能

监控工具

Prometheus + Grafana 监控

  • 安装和配置 Prometheus

  • 配置 GaussDB 导出器

  • 安装和配置 Grafana

  • 导入 GaussDB 监控模板

  • 数据库连接数

  • 查询执行时间

  • 缓冲区命中率

  • 锁等待情况

Zabbix 监控

  • 安装和配置 Zabbix Server

  • 安装 Zabbix Agent

  • 配置 GaussDB 监控模板

  • 设置告警规则

  • 数据库可用性

  • 磁盘空间使用情况

  • CPU 和内存使用率

  • 慢查询数量

常见问题(FAQ)

Q1: 如何使用 gs_check 工具检查集群状态?

A1: 使用以下命令检查集群状态:

bash
gs_check -i cluster

该命令会检查集群配置、节点状态、网络连接等,并生成详细的检查报告。

Q2: 如何查看慢查询日志?

A2: 可以通过以下方式查看慢查询日志:

  1. 配置 postgresql.conf 中的 log_min_duration_statement 参数
  2. 使用 gs_log 工具查看日志:
    bash
    gs_log -D /data/gaussdb/data -e slow
  3. 或直接查看日志文件:
    bash
    tail -f /data/gaussdb/data/pg_log/postgresql-$(date +%Y-%m-%d).log | grep -i slow

Q3: 如何使用 EXPLAIN 分析查询性能?

A3: 使用 EXPLAIN 命令查看查询执行计划:

sql
EXPLAIN ANALYZE SELECT * FROM table_name WHERE condition;

分析执行计划中的节点类型、成本估算和实际执行时间,识别性能瓶颈。

Q4: 如何监控数据库连接数?

A4: 可以通过以下方式监控数据库连接数:

  1. 使用 gsql 执行查询:
    sql
    SELECT count(*) FROM pg_stat_activity;
  2. 配置 Prometheus + Grafana 监控
  3. 使用 Zabbix 监控模板

Q5: 如何收集数据库性能统计信息?

A5: 可以使用以下工具收集性能统计信息:

  1. gs_stat 工具:实时监控系统性能
  2. pg_stat_statements 扩展:收集 SQL 执行统计
  3. EXPLAIN ANALYZE:分析具体查询的执行情况
  4. Prometheus + Grafana:长期存储和展示性能数据