首页 >
问答 >
云计算 >
Linux MariaDB如何监控与日志分析
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 status 、SHOW 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 )变更前后留存记录,便于回溯。
以上实践有助于把监控、分析与容量管理标准化、自动化,降低运维风险。