ubuntu

如何在Ubuntu中监控MariaDB性能

小樊
42
2025-09-19 04:21:47
栏目: 云计算

如何在Ubuntu中监控MariaDB性能

监控MariaDB性能需结合内置工具(快速定位基础问题)、系统命令(分析资源占用)和第三方工具(全面可视化与告警)。以下是具体方法:

一、内置工具:快速获取数据库核心指标

1. mysqladmin:命令行状态检查

mysqladmin是MariaDB自带的客户端工具,可快速查看服务器运行状态。常用命令:

# 查看整体状态(包含运行时间、线程数、查询次数等)
mysqladmin -u root -p status
# 查看更详细的服务器信息(如连接数、缓冲池命中率)
mysqladmin -u root -p extended-status

输入密码后,会返回关键指标(如Uptime表示运行时间,Threads_connected表示当前连接数)。

2. SHOW STATUS/SHOW VARIABLES:深入查看状态与配置

在MariaDB命令行中执行以下命令,获取更详细的性能数据:

-- 查看所有状态变量(如连接数、查询缓存命中率、InnoDB缓冲池使用情况)
SHOW STATUS;
-- 查看所有系统变量(如innodb_buffer_pool_size、max_connections等配置)
SHOW VARIABLES;
-- 筛选特定指标(如当前慢查询数量)
SHOW STATUS LIKE 'Slow_queries';

可通过LIKE子句筛选所需指标,帮助定位配置瓶颈。

3. 慢查询日志:定位低效SQL

慢查询日志记录执行时间超过阈值的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语句。

4. Performance Schema:详细性能数据采集

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)。

二、系统命令:分析系统资源占用

1. top/htop:查看进程资源使用

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),可快速定位高资源占用的进程。

2. iostat/vmstat:监控磁盘与内存I/O

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瓶颈。

3. ss/netstat:查看网络连接

ss(或netstat)可查看MariaDB的网络连接状态,排查网络问题:

# 查看MariaDB的网络连接(tcp协议,端口3306)
ss -tnp | grep mariadb
# 或使用netstat
netstat -tnp | grep mariadb

关注ESTABLISHED(已建立连接)和TIME_WAIT(等待关闭)连接数,过多连接可能导致资源耗尽。

三、第三方工具:全面可视化与告警

1. Percona Monitoring and Management (PMM)

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>即可查看监控面板。

2. Prometheus + Grafana

Prometheus用于采集指标,Grafana用于可视化,组合起来可实现自定义监控:

3. Netdata

Netdata是轻量级开源监控工具,实时监控系统与MariaDB指标(如CPU、内存、磁盘、查询延迟)。安装命令:

bash <(curl -Ss https://my-netdata.io/kickstart.sh)

安装后,通过浏览器访问http://<SERVER_IP>:19999即可查看实时 dashboard,无需额外配置。

四、日常监控建议

通过上述方法,可全面监控MariaDB的性能,快速定位并解决性能问题。

0
看了该问题的人还看了