如何在Ubuntu中监控MariaDB性能
监控MariaDB性能需结合内置工具(快速定位基础问题)、系统命令(分析资源占用)和第三方工具(全面可视化与告警)。以下是具体方法:
mysqladmin是MariaDB自带的客户端工具,可快速查看服务器运行状态。常用命令:
# 查看整体状态(包含运行时间、线程数、查询次数等) mysqladmin -u root -p status # 查看更详细的服务器信息(如连接数、缓冲池命中率) mysqladmin -u root -p extended-status 输入密码后,会返回关键指标(如Uptime表示运行时间,Threads_connected表示当前连接数)。
在MariaDB命令行中执行以下命令,获取更详细的性能数据:
-- 查看所有状态变量(如连接数、查询缓存命中率、InnoDB缓冲池使用情况) SHOW STATUS; -- 查看所有系统变量(如innodb_buffer_pool_size、max_connections等配置) SHOW VARIABLES; -- 筛选特定指标(如当前慢查询数量) SHOW STATUS LIKE 'Slow_queries'; 可通过LIKE子句筛选所需指标,帮助定位配置瓶颈。
慢查询日志记录执行时间超过阈值的SQL语句,是优化查询的关键工具。启用方法:
-- 开启慢查询日志(需修改my.cnf或直接执行) SET GLOBAL slow_query_log = 'ON'; -- 设置慢查询阈值(单位:秒,如2秒) SET GLOBAL long_query_time = 2; -- 指定慢查询日志文件路径 SET GLOBAL slow_query_log_file = '/var/log/mysql/mariadb-slow.log'; 查看慢查询日志:
sudo tail -f /var/log/mysql/mariadb-slow.log # 实时查看 sudo mysqldumpslow -s t /var/log/mysql/mariadb-slow.log # 分析慢查询(按时间排序) 通过分析慢查询,可添加索引或优化SQL语句。
Performance Schema是MariaDB内置的性能监控框架,可采集SQL执行、锁等待、I/O等详细数据。常用查询:
-- 查看当前执行的线程(包含SQL语句、执行时间) SELECT * FROM performance_schema.threads WHERE PROCESSLIST_STATE IS NOT NULL; -- 查看最近执行的SQL语句统计(如执行次数、总时间) SELECT * FROM performance_schema.events_statements_current; -- 查看表锁等待情况 SELECT * FROM performance_schema.events_waits_current WHERE EVENT_NAME LIKE 'wait/io/table/sql/handler%'; 通过这些查询,可深入分析性能瓶颈(如锁竞争、慢SQL)。
top(或增强版htop)可实时显示MariaDB进程的CPU、内存占用:
# 查看MariaDB进程的CPU和内存使用(pgrep获取进程ID) top -p $(pgrep -f mariadb) # 或使用htop(更友好,需安装:sudo apt install htop) htop -p $(pgrep -f mariadb) 通过排序(按%CPU或%MEM),可快速定位高资源占用的进程。
iostat(需安装sysstat包:sudo apt install sysstat)用于分析磁盘I/O:
iostat -x 1 # 每秒显示一次扩展磁盘统计(关注await、%util) vmstat用于查看系统整体资源使用(CPU、内存、I/O):
vmstat 1 # 每秒显示一次系统状态(关注si/so(交换分区使用)、wa(I/O等待)) 若%util接近100%或wa值过高,说明磁盘I/O瓶颈。
ss(或netstat)可查看MariaDB的网络连接状态,排查网络问题:
# 查看MariaDB的网络连接(tcp协议,端口3306) ss -tnp | grep mariadb # 或使用netstat netstat -tnp | grep mariadb 关注ESTABLISHED(已建立连接)和TIME_WAIT(等待关闭)连接数,过多连接可能导致资源耗尽。
PMM是开源的数据库监控解决方案,提供可视化 dashboard、慢查询分析、告警功能。安装步骤:
# 安装PMM Server(Docker方式) docker run -d --name pmm-server -p 443:443 percona/pmm-server:latest # 安装PMM Client(在MariaDB服务器上) curl -sSL https://cli.pmm.percona.com/install.sh | sh pmm-admin config --server-insecure-tls --server-url=https://<PMM_SERVER_IP>:443 pmm-admin add mariadb --username=root --password=<PASSWORD> --port=3306 安装后,通过浏览器访问https://<PMM_SERVER_IP>即可查看监控面板。
Prometheus用于采集指标,Grafana用于可视化,组合起来可实现自定义监控:
prometheus.yml添加MariaDB exporter);sudo apt install mariadb-exporter);sudo apt install grafana),导入MariaDB监控 dashboard(如ID:11074)。QPS、TPS、连接数等指标。Netdata是轻量级开源监控工具,实时监控系统与MariaDB指标(如CPU、内存、磁盘、查询延迟)。安装命令:
bash <(curl -Ss https://my-netdata.io/kickstart.sh) 安装后,通过浏览器访问http://<SERVER_IP>:19999即可查看实时 dashboard,无需额外配置。
QPS(每秒查询数)、TPS(每秒事务数)、连接数、InnoDB缓冲池命中率(Innodb_buffer_pool_read_requests/Innodb_buffer_pool_reads);通过上述方法,可全面监控MariaDB的性能,快速定位并解决性能问题。