温馨提示×

Ubuntu MariaDB如何监控性能指标

小樊
35
2025-12-28 09:29:04
栏目: 云计算

Ubuntu MariaDB 性能监控实操指南

一 内置数据库指标与日志

  • 使用 mysqladmin 快速巡检:查看运行时间与线程、查询概况(如 Threads_connected)以及扩展状态(含 Innodb_buffer_pool_read_requests/hits 等),示例:
    • mysqladmin -u root -p status
    • mysqladmin -u root -p extended-status
  • 在 MariaDB 客户端用 SHOW 系列定位瓶颈:
    • SHOW STATUS LIKE ‘Threads_connected’;、SHOW STATUS LIKE ‘Slow_queries’;
    • SHOW VARIABLES LIKE ‘innodb_buffer_pool_size’;、SHOW VARIABLES LIKE ‘max_connections’;
    • SHOW PROCESSLIST/GLOBAL STATUS 用于识别长时间运行或锁等待的 SQL。
  • 启用与分析慢查询日志(建议阈值 1–2 秒):
    • SET GLOBAL slow_query_log=‘ON’;
    • SET GLOBAL long_query_time=2;
    • SET GLOBAL slow_query_log_file=‘/var/log/mysql/mariadb-slow.log’;
    • 实时查看:tail -f /var/log/mysql/mariadb-slow.log
    • 汇总分析:mysqldumpslow -s t /var/log/mysql/mariadb-slow.log
  • 利用 Performance Schema 做细粒度诊断:
    • 当前执行线程与语句:SELECT * FROM performance_schema.threads WHERE PROCESSLIST_STATE IS NOT NULL;
    • 近期语句统计:SELECT * FROM performance_schema.events_statements_current;
    • 表锁等待:SELECT * FROM performance_schema.events_waits_current WHERE EVENT_NAME LIKE ‘wait/io/table/sql/handler%’;
  • 服务与错误日志:
    • 服务状态:sudo systemctl status mariadb
    • 错误日志:tail -f /var/log/mysql/error.log(路径以实际配置为准)

二 操作系统与网络资源监控

  • 进程资源:top/htop 聚焦 mysqld(如 CPU%、MEM%),示例:top -p $(pgrep -f mariadb) 或 htop -p $(pgrep -f mariadb)
  • CPU/内存/IO 与交换:vmstat 1(关注 si/sowa
  • 磁盘 I/O:iostat -x 1(关注 await、%util;接近 100% 多为磁盘瓶颈)
  • 网络连接:ss -tnp | grep mariadb(或 netstat -tnp | grep mariadb),关注 ESTABLISHED/TIME_WAIT 数量变化
  • 安装依赖:sudo apt install sysstat htop(iostat 属于 sysstat)

三 第三方监控与可视化

  • Percona Monitoring and Management(PMM):一体化监控、慢查询分析与告警
    • 服务端:docker run -d --name pmm-server -p 443:443 percona/pmm-server:latest
    • 客户端:curl -sSL https://cli.pmm.percona.com/install.sh | sh
    • 注册实例:pmm-admin config --server-insecure-tls --server-url=https://<PMM_SERVER_IP>:443
    • 添加 MariaDB:pmm-admin add mariadb --username=root --password= --port=3306
  • Prometheus + Grafana:灵活采集与可视化
    • 部署 Prometheus,配置 MariaDB Exporter(如 apt install mariadb-exporter)
    • Grafana 导入 MariaDB 仪表盘(如 ID:11074),按需自定义告警规则
  • 其他可选:Zabbix、Nagios、Netdata、Glances(开箱即用、告警与多主机统一视图)

四 关键指标与告警阈值建议

指标 含义 告警阈值建议 排查方向
Threads_connected / Max_used_connections 当前/历史最大连接数 接近或达到 max_connections 连接泄漏、应用未复用连接、调整连接池
Slow_queries 慢查询累计 持续增长或突增 开启并分析慢查询日志、加索引、改写 SQL
Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests 缓冲池未命中/总读 命中率 < 95% 增大 innodb_buffer_pool_size、优化热表与索引
Questions / Queries 请求总量与总语句 与业务预期偏差大 应用异常重试、语句风暴
Created_tmp_disk_tables / Created_tmp_tables 磁盘/内存临时表 磁盘临时表比例高 优化 GROUP BY/ORDER BY、增加 tmp_table_size
Handler_read_rnd_next 全表扫描次数 持续偏高 增加合适索引、改写查询
Select_scan 全表扫描语句数 持续偏高 同上
Table_locks_waited / Table_locks_immediate 表锁等待/立即 等待显著 行级锁/事务设计、降低锁粒度
Aborted_clients / Aborted_connects 异常断开 持续增长 网络不稳、超时设置、认证失败
Disk %util、await(iostat) 磁盘利用率与等待 %util≈100% 或 await 高 磁盘瓶颈、升级 IOPS、优化 I/O 模式
vmstat wa I/O 等待占比 持续偏高 同上
ss 中 TIME_WAIT/ESTABLISHED 连接状态分布 TIME_WAIT 过多 调整内核 tcp_tw_reuse/tcp_fin_timeout、连接复用
error.log 错误/告警 服务异常 出现 ERROR/WARNING 按错误定位(权限、磁盘满、复制中断等)
说明:阈值需结合业务与基线动态调整,建议以历史 P95/P99 为参考。

五 快速排障流程

  • 资源先行:iostat -x 1 与 vmstat 1 判断 CPU/内存/磁盘/IO 是否瓶颈;必要时用 top/htop 聚焦 mysqld。
  • 连接与负载:mysqladmin status / SHOW STATUS LIKE ‘Threads_connected’; 与 SHOW PROCESSLIST 找出异常会话与长事务。
  • 慢 SQL:确认 slow_query_log 已开启,long_query_time 设为 1–2 秒;用 tail/mysqldumpslow 找出 TOP SQL 并优化(索引/执行计划/语句改写)。
  • 锁与并发:Performance Schema 查 events_waits_current/threads,定位锁等待与热点表。
  • 持久化与可视化:短期用命令行与日志定位,长期接入 PMMPrometheus+Grafana 做趋势与告警。

0