如何在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的性能,快速定位并解决性能问题。