1. 服务状态检查
使用systemctl命令可快速确认MariaDB服务的运行状态(是否启动、加载情况等),适用于日常快速排查服务可用性问题。
sudo systemctl status mariadb
若服务正常运行,输出会显示“Active: active (running)”及启动时间和最新日志片段;若未运行,可通过sudo systemctl start mariadb启动服务。
2. 命令行工具监控
mysqladmin -u root -p status
输出示例:Uptime: 345678 Threads: 12 Questions: 98765 Slow queries: 0 Opens: 12345(分别表示运行时间、当前线程数、总查询数、慢查询数、打开表数量)。SHOW STATUS查看服务器详细状态变量(如连接数、缓存命中率、锁等待时间等),通过SHOW PROCESSLIST查看当前所有活动的SQL连接及执行状态(如查询耗时、执行阶段、用户信息等)。mysql -u root -p -e "SHOW STATUS;" # 查看所有状态变量
mysql -u root -p -e "SHOW PROCESSLIST;" # 查看活动连接
更精准的监控可结合条件过滤(如SHOW STATUS LIKE 'Threads_connected';仅查看当前连接数)。3. 系统资源监控
通过Linux系统工具监控MariaDB的资源占用情况,定位性能瓶颈(如CPU、内存、磁盘I/O过高):
top -p $(pgrep -f mariadb)或htop -p $(pgrep -f mariadb)可过滤出MariaDB进程)。iostat -x 1,每秒刷新一次,重点关注%util(磁盘利用率)和await(平均I/O等待时间))。vmstat 1每秒刷新一次,重点关注si(内存换入)、so(内存换出)、wa(I/O等待)等指标。ss -tnp | grep mariadb或netstat -tnp | grep mariadb可显示TCP连接的详细信息(如本地/远程地址、状态、进程ID)。4. 第三方监控工具
对于复杂环境或需要长期监控的场景,推荐使用专业工具:
mysqld_exporter),再用Grafana创建自定义仪表板(如展示QPS、慢查询数、线程池状态),适合需要高度定制化的场景。5. 日志分析
MariaDB的日志文件记录了错误、警告及关键事件,是排查问题的重要依据:
/var/log/mysql/error.log或/var/log/mariadb/error.log,使用tail -f命令实时查看最新日志(如数据库崩溃、权限问题、连接超报错)。sudo tail -f /var/log/mysql/error.log # 或/var/log/mariadb/error.log
日志中常见关键信息:ERROR(错误事件)、Warning(警告事件)、Aborted connections(异常断开连接)。6. 性能模式(Performance Schema)
MariaDB内置的性能模式可深入采集性能数据(如SQL执行细节、锁等待、线程活动),适合高级性能分析:
通过查询性能模式的系统表获取详细信息,例如:
performance_schema.threads:查看当前所有线程的状态(如是否空闲、执行的SQL类型);performance_schema.events_statements_current:查看当前正在执行的SQL语句及执行时间;performance_schema.table_io_waits_summary_by_table:查看表的I/O等待情况(如哪些表读取/写入频繁)。SELECT * FROM performance_schema.threads WHERE PROCESSLIST_STATE IS NOT NULL; # 查看非空闲线程
SELECT * FROM performance_schema.events_statements_current ORDER BY TIMER_WAIT DESC LIMIT 5; # 查看最耗时的SQL
性能模式需提前开启(修改my.cnf配置文件,添加performance_schema=ON并重启服务)。