温馨提示×

如何在Debian上监控MariaDB性能

小樊
33
2025-12-28 20:05:14
栏目: 云计算

在 Debian 上监控 MariaDB 性能

一 快速定位的命令行工具

  • 进程与系统负载
    • 查看 MariaDB 进程的 CPU/内存:top -p $(pgrep -f mariadb)htop -p $(pgrep -f mariadb)
    • 系统资源概览:free -hvmstat 1 5iostat -xz 1(需安装 sysstat:sudo apt install sysstat)
    • 磁盘与空间:df -h
    • 网络与连接:ss -tulnp | grep mariadb(或 netstat)
    • 系统日志:journalctl -xe
  • MariaDB 即时状态
    • 服务状态:mysqladmin -u root -p status
    • 关键状态与连接:SHOW GLOBAL STATUS LIKE ‘Threads_connected’;SHOW GLOBAL STATUS LIKE ‘Queries’;SHOW GLOBAL STATUS LIKE ‘Slow_queries’;SHOW PROCESSLIST;
  • 提示:将以上命令与 watch 组合,可形成轻量巡检(如 watch -n 5 ‘mysqladmin status’)。

二 启用与利用 MariaDB 内置监控

  • 慢查询日志(定位性能瓶颈的优先项)
    • 配置建议(/etc/mysql/mariadb.conf.d/50-server.cnf 或 /etc/my.cnf):
      • slow_query_log = 1
      • slow_query_log_file = /var/log/mysql/mysql-slow.log
      • long_query_time = 1(可按业务调为 0.5–2 秒)
      • 可选:log_queries_not_using_indexes = 1
    • 分析工具:mysqldumpslow /var/log/mysql/mysql-slow.log
  • 性能 Schema 与查询分析
    • 启用性能采集:UPDATE performance_schema.setup_instruments SET ENABLED = ‘YES’, TIMED = ‘YES’ WHERE NAME LIKE ‘statement/%’;
    • 识别慢 SQL:在 performance_schema 中查询高耗时的 statement/sql 事件,配合 EXPLAIN 做索引与执行计划分析。
  • 常用状态指标与计算
    • 连接与吞吐:Threads_connectedQueries
    • InnoDB 缓冲池命中率:1 - (Innodb_buffer_pool_reads / Innodb_buffer_pool_read_requests)(低于 95% 通常需优化或增大缓冲池)

三 可视化与长期监控方案

  • Prometheus + Grafana
    • 采集:node_exporter(主机)、mysqld_exporter(MariaDB)、可选 apache_exporter(Web)
    • 存储与展示:Prometheus 拉取指标,Grafana 配置面板(连接数、QPS、缓存命中率、慢查询、磁盘 I/O 等)
    • 告警:通过 Alertmanager 配置阈值与通知(如磁盘、服务宕机、查询延迟异常)
  • 企业级与开箱即用
    • Zabbix:模板化监控 Linux、MariaDB、Apache/Nginx,提供图形与阈值告警
    • PMM(Percona Monitoring and Management):面向数据库的开源监控平台,图形化展示与慢查询分析
    • Netdata:轻量实时仪表盘,适合快速上手与边云环境
  • 建议指标留存周期:7–30 天,便于回溯与基线对比。

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

维度 关键指标 建议阈值或关注点 排查方向
CPU load average、%usr、%sys、%iowait load ≈ CPU 核数为健康;%iowait 持续 > 20% 多为 I/O 瓶颈 iostat、进程 I/O、磁盘健康
内存 available、swap used、si/so swap 持续增长或 si/so 非零且持续 需警惕 内存泄漏、缓存/缓冲命中、服务配置
磁盘 %util、await、r/s、w/s %util 持续 > 80% 易成瓶颈;await 升高表示响应慢 I/O 密集进程、RAID/磁盘健康、SQL 优化
网络 带宽占用、丢包/重传 带宽接近上限或重传率高影响响应 连接数、长连接、协议与对端状态
MariaDB Threads_connected、Queries/s、Slow_queries、Innodb_buffer_pool_reads/requests 慢查询增长;缓存命中率 < 95% 需优化 慢查询日志、索引与 SQL、缓冲池与配置
注:阈值需结合业务峰值与历史基线动态校准。

五 日志管理与合规要点

  • 错误日志:记录启动、运行、关闭错误,路径通常为 /var/log/mysql/error.log,建议持续关注异常与告警。
  • 慢查询日志:用于定位性能问题,配合 mysqldumpslow 做聚合分析。
  • 二进制日志与复制:用于主从复制与时间点恢复,必要时结合 mysqlbinlog 分析。
  • 日志轮转:使用 logrotate 防止日志过大
    • 示例(/etc/logrotate.d/mysql):
      • /var/log/mysql/*.log { daily missingok rotate 7 compress notifempty create 640 mysql adm }
  • 审计日志(可选):用于安全合规与问题追踪,开启时注意性能与存储开销。

0