温馨提示×

Linux MariaDB如何监控与日志分析

小樊
44
2025-12-30 03:11:01
栏目: 云计算

Linux MariaDB监控与日志分析实战指南

一 监控总览与核心指标

  • 服务可用性:使用systemctl status mariadb确认实例是否运行;结合mysqladmin status查看Uptime、Threads、Questions等基础健康信息。
  • 数据库内部指标:在 MariaDB 内执行SHOW STATUS LIKE ‘Threads_connected’;SHOW PROCESSLIST;观察连接与正在执行的语句;配合SHOW VARIABLES核对关键配置(如max_connections、innodb_buffer_pool_size)。
  • 系统资源:用top/htop -p $(pgrep -f mariadb)观察 CPU/内存;用iostat -x 1关注磁盘await、%util;用vmstat 1关注si/so、wa;用ss -tnp | grep 3306查看连接状态。
  • 关键关注面:连接数、查询速率、慢查询数量、InnoDB 缓冲池命中率、磁盘 I/O 利用率、锁等待与复制延迟(如启用)。
    以上命令与指标覆盖了日常巡检与问题定位的高频场景,适合快速上手与持续观测。

二 日志类型位置与启用方法

  • 常见日志与路径(以发行版默认与常见配置为准):
    • 错误日志:/var/log/mysql/error.log/var/log/mariadb/mariadb.log
    • 慢查询日志:/var/log/mysql/slow.log(默认可能关闭)
    • 二进制日志:/var/log/mysql/mysql-bin.****(用于恢复与复制)
    • 通用查询日志:/var/log/mysql/general.log(默认关闭,性能影响大,慎用)
    • 审计日志:/var/log/mysql/audit.log(需插件启用)
  • 快速启用示例(动态设置,重启后需持久化到配置):
    • 慢查询日志:
      • SET GLOBAL slow_query_log = ‘ON’;
      • SET GLOBAL long_query_time = 2;
      • SET GLOBAL slow_query_log_file = ‘/var/log/mysql/mariadb-slow.log’;
    • 二进制日志(主从复制常用):
      • SET GLOBAL log_bin = ‘/var/log/mysql/mysql-bin’;
      • SET GLOBAL server_id = 1;
      • SET GLOBAL binlog_format = ROW;
      • SET GLOBAL expire_logs_days = 10;
  • 持久化与重启:将相关配置写入**/etc/mysql/mariadb.conf.d/50-server.cnf/etc/my.cnf后执行systemctl restart mariadb**。
  • 系统日志集成:若使用 systemd,可用journalctl -u mariadb -f实时查看服务日志。
    以上路径与开关适用于主流发行版,便于定位错误、慢 SQL、复制与安全审计。

三 日志分析与慢查询优化

  • 实时与检索:
    • 错误日志:tail -f /var/log/mysql/error.log,关注ERROR、Warning、Deadlock等关键词。
    • 慢查询日志:tail -f /var/log/mysql/mariadb-slow.log;用mysqldumpslow -s t /var/log/mysql/mariadb-slow.log按耗时排序,或**-s c**按次数排序。
  • 二进制日志回放与审计:
    • 回放/分析变更:mysqlbinlog /var/log/mysql/mysql-bin.000001
    • 审计日志:tail -f /var/log/mysql/audit.log(需启用 server_audit 插件)。
  • 慢 SQL 优化闭环:
    • EXPLAIN分析执行计划,结合索引与 SQL 重写;必要时调整long_query_time阈值,聚焦业务关键路径。
      以上方法覆盖从发现到定位再到优化的完整链路,适合日常性能治理。

四 可视化监控与告警方案

  • Prometheus + Grafana:
    • 部署MariaDB Exporter采集指标,Prometheus 拉取,Grafana 导入 MariaDB 仪表盘(如ID:11074);在 Grafana 中基于mysql_global_status_threads_connected等指标配置阈值告警。
  • Percona Monitoring and Management(PMM):
    • 一键部署 PMM Server(Docker),在节点安装 PMM Client 并注册 MariaDB 实例,获得实时性能面板、慢查询分析、告警等能力。
  • Navicat Monitor:
    • 无代理远程监控,支持MySQL/MariaDB与主流云数据库,提供实时/历史图表、复制拓扑、查询分析器、自定义指标与告警
  • 传统监控平台:Zabbix、Nagios、Datadog等均可对 MariaDB 进行可用性、连接数、查询性能等监控与告警。
    以上方案可按规模与复杂度选择,满足从开源到商业、从自建到云上的一体化监控需求。

五 日常巡检与自动化要点

  • 巡检清单(建议脚本化与定时执行):
    • 服务状态:systemctl is-active mariadb;错误日志是否有新ERROR
    • 连接与负载:mysqladmin statusSHOW STATUS LIKE ‘Threads_connected’;SHOW PROCESSLIST;
    • 资源瓶颈:iostat -x 1(看**%util、await**)、vmstat 1(看wa、si/so)、ss -tnp | grep 3306
    • 慢查询:mysqldumpslow定期聚合,关注 Top N 耗时/次数 SQL。
  • 日志轮转与容量治理:
    • 使用logrotate管理**/var/log/mysql/*.log**,示例策略:daily、rotate 7、compress、create 640 mysql adm、postrotate 执行 systemctl restart mariadb;用logrotate -vf /etc/logrotate.d/mysql测试。
  • 审计与安全:
    • 启用server_audit插件记录connect、query、table等事件,设置rotate_size、rotations控制单文件大小与保留个数。
  • 变更留痕:重要参数(如long_query_time、max_connections、innodb_buffer_pool_size)变更前后留存记录,便于回溯。
    以上实践有助于把监控、分析与容量管理标准化、自动化,降低运维风险。

0