温馨提示×

如何在Ubuntu中监控MariaDB性能

小樊
56
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用于可视化,组合起来可实现自定义监控:

  • 安装Prometheus(配置prometheus.yml添加MariaDB exporter);
  • 安装MariaDB exporter(sudo apt install mariadb-exporter);
  • 安装Grafana(sudo apt install grafana),导入MariaDB监控 dashboard(如ID:11074)。
    通过Grafana可创建自定义 dashboard,监控QPSTPS连接数等指标。

3. Netdata

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);
  • 设置告警:通过PMM或Prometheus设置阈值(如连接数超过100、慢查询超过10条/分钟),及时通知管理员。

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

0