MySQL慢日志典型实践
更新时间:2023-08-24
概览
本文主要介绍慢日志明细和错误日志明细的使用方式。
需求场景
慢日志明细: 历史慢SQL实时统计,方便数据库管理员对慢查询语句进行分析,快速定位系统正在进行的性能问题。
错误日志明细: 开启和关闭MySQL服务的时间和服务运行中异常情况的统计,用于MySQL服务出现异常时,及时查找原因。
方案概述
慢日志明细: 用来记录在MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志明细中。
错误日志明细:用来记录MySQL Server每次启动和关闭的详细信息以及运行过程中所有较为严重的警告和错误信息。
操作步骤
通过控制台查看
- 登录云数据库 RDS 管理控制台
- 在左侧导航栏找到“产品服务”-“数据库”-“云数据库 RDS”
- 在页面左上角,选择实例所在地域
- 找到目标实例,单击实例ID
- 在实例ID下面的导航栏中单击“日志管理”
-
在“日志管理”页面可看到“慢日志明细”和“错误日志明细”
- “慢日志明细”,展示的是按分钟粒度统计的慢SQL。可选近一周数据,默认显示“近一天”。如下图所示:
- “错误日志明细”,展示的是按分钟粒度统计的错误日志。可选近一周数据,默认显示”近一天“。如下图所示:
通过命令查看
- 通过数据库管理工具登录RDS管理控制台
-
在顶部菜单栏点击SQL窗口
- 执行命令
select * from mysql.slow_log;
,获取慢日志明细数据 - 执行命令
show variables like 'log_error';
,获取错误日志明细数据
- 执行命令
使用场景举例
当前系统响应比较慢,如何利用慢SQL功能进行定位?
- 系统响应慢是进行时,需要用“慢日志明细”功能进行分析。
-
慢SQL统计信息里,可以查看具体的SQL,排在Top的SQL需要重点关注。一般情况下,SQL不会无故变慢,需要根据执行次数、执行时间、返回行数、解析行数进行分析,常见情况:
(1) SQL解析行数比返回行数多得多:很可能是SQL没有合理使用索引导致。
(2) SQL执行次数比较多,而解析行数和返回行数都比较少:一般是并发太大导致SQL堆积,而使整个系统响应变慢。
(3) SQL解析行数和返回行数都比较多:一般SQL本身没有太大优化空间,需要业务层面进行优化。
(4) 业务流量太大导致系统响应变慢:- 写流量比较大,可参考百度智能云 云数据库 DRDS 文档详情,利用DRDS的分片扩展特性,提升整个集群的写能力和存储容量。
- 读流量比较大,可参考百度智能云只读实例和代理号实例文档详情,利用代理实例的读写分离和负载均衡特性,分摊主库的读流量压力。
- 系统存在性能压力较大,可参考BCM设置慢查询和系统资源方面的监控报警,当感知到系统存在性能压力时,可以通过“慢日志明细”及时分析。
- 写流量比较大,可参考百度智能云 云数据库 DRDS 文档详情,利用DRDS的分片扩展特性,提升整个集群的写能力和存储容量。
相关产品
云数据库 SCS:兼容 Redis、Memcached 协议的分布式缓存服务
云数据库 DocDB for MongoDB:兼容 MongoDB 协议的文档数据库服务