优秀的编程知识分享平台

网站首页 > 技术文章 正文

MySQL监控报警常见问题的处理方法

nanyue 2024-08-08 19:03:02 技术文章 9 ℃

MySQL CPU 使用率过高的常见原因和解决方法

慢查询堆积,请查看慢查询和全表扫描,结合慢查询日志进行分析优化,若没有慢查询只有全表扫描,建议将 long_query_time 调小至1s - 2s,使用一段时间后再分析慢查询。


没有慢查询堆积,请查看实例监控上的内存占用,若超出实例规格很多,并且磁盘读写量明显增大,表明内存遇到瓶颈,建议升级内存。


MySQL容器网络出/入流量过高的常见原因和解决方法

当出现网络流量过高的情况,通常是因为客户端与服务端之间大量数据传输导致的,数据通信结束,流量即可恢复正常,如果不是数据传输导致,需要考虑是否是服务器中毒或者受到攻击,在对内或对外大量发包导致,此时,可按照以下方法进行排查:

  1. Linux系统的服务器,可以在系统中安装nethogs查看具体的进程占用流量的情况(如nether eth0->查看网卡具体流量)并杀死该进程;对于一些常见的网络问题,如容器之间网络通信问题,您可以使用Tcpdump工具捕获网络流量,来解决这些网络问题;
  2. 对于恶意攻击,把异常请求的IP加入到防火墙的黑名单中;修改默认端口,尽量复杂些。


  • MySQL实例(容器)down机如何处理? Mysql实例宕机情况主要分为两种:硬件问题MySQL服务问题 硬件问题处理思路:

MySQL服务问题处理思路:

  1. 首先判断是否影响业务,是否需要切库,保证业务运行是首要任务
  2. 根据MySQL错误代码定位问题,进行服务恢复
  • MySQL可用缓存空间(容器Memory使用率)报警的常见原因和解决方法 MySQL缓存机制提供了快速获取数据的方式,MySQL将SELECT语句和查询结果存放在缓冲区中,对于同样的SELECT语句,可直接从缓冲区中读取结果。但如果可用缓存过低,可能会影响新的查询语句的执行效率,因此可对缓存不定时进行清理。常见清理查询缓存命令

1、FLUSH QUERY CACHE; // 清理查询缓存内存碎片。

2、RESET QUERY CACHE; // 从查询缓存中移出所有查询。

3、FLUSH TABLES; //关闭所有打开的表,同时该操作将会清空查询缓存中的内容

  • MySQL容器存储使用率(已用日志磁盘空间)报警的解决方法

首先检查是哪一个目录的磁盘量已快耗尽,如果是MySQL的挂载目录的磁盘已快满,考虑定时删除过期的日志文件,或是由于备份文件过大,可以增大磁盘容量,如果是其他目录,检查是否有垃圾缓存,或者其余日志文件,可以考虑只保留最新的内容。常见清理日志文件的方法如下:

方法1:PURGE MASTER LOGS

语法:

PURGE { BINARY | MASTER } LOGS { TO 'log_name' | BEFORE datetime_expr }

用于删除列于在指定的日志或日期之前的日志索引中的所有二进制日志。这些日志也会从记录在日志索引文件中的清单中被删除,这样被给定的日志成为第一个。

例子:

PURGE BINARY LOGS TO 'mysql-bin.000002'; //删除mysql-bin.000002之前的日志(不包括mysql-bin.000002)

PURGE BINARY LOGS BEFORE '2014-04-28 23:59:59'; //删除2014-04-28 23:59:59时间点之前的日志

    • 方法2:指定过期天数(expire_logs_days) 删除日志后,配置此环境变量,防止后期mysql再次产生大量日志。

例子:例如我们设置过期为60天

mysql> set global expire_logs_days = 60;

Query OK, 0 rows affected (0.05 sec)

mysql> flush logs;

Query OK, 0 rows affected (0.07 sec)

  • innodb缓存池的读命中率报警怎么办? MySQL利用缓存中的数据具有比较严格的条件,具体如何来提高缓存的命中率,如下几个建议供参考: 配置时,客户端与服务器端要使用相同的字符集。如果客户端(或者说第三方工具)与服务器端使用的字符集不同,那么任何情况下都不会使用缓存功能。 在服务端,尽量要固化查询的语句来获取相同的数据。 提高内存中缓存的配置,来提高命中率。
  • Innodb缓存池的利用率过高报警怎么办? 长时间缓存池利用率过高,可能会影响新的查询语句的执行效率,因此可对缓存不定时进行清理。常见清理查询缓存命令:

1、FLUSH QUERY CACHE; // 清理查询缓存内存碎片。

2、RESET QUERY CACHE; // 从查询缓存中移出所有查询。

3、FLUSH TABLES; //关闭所有打开的表,同时该操作将会清空查询缓存中的内容


除此以外可根据具体使用情况提高缓存池大小的方法改善Innodb缓存池的利用率过高的问题。

  • MySQL总SQL请求数过高报警怎么办?

MySQL服务使用过程中,如果发生总SQL请求数过高的情况,请结合MySQL使用情况和日志文件具体分析原因,一般情况下不影响服务正常使用。

  • MySQL删除数/插入数/覆盖数/查询覆盖数/查询数/慢查询数/更新数过高报警怎么办?

MySQL服务使用过程中,如果发生总删除数/插入数/覆盖数/查询覆盖数/查询数/慢查询数/更新数过高的情况,请结合MySQL使用情况和日志文件具体分析原因,一般情况下不影响服务正常使用。

  • MySQL 最大连接数使用率过高的常见原因和解决方法
    • sleep 线程数很多,建议调低 wait_timeout 和 interactive_timeout 参数值。
    • 慢查询堆积,long_query_time 参数值默认10s,建议调成1s - 2s,观察慢查询日志。
    • sleep 线程数很少,也没有慢查询堆积,建议调大 max_connections 参数值。

连接登录常见问题

  • 无法连接实例问题



  • 排除故障1
  • 先确认是否使用正确的登录信息,保证输入了正确的账号密码,端口号,host IP等;
    • 排除故障2

确认网络是否通畅,可以使用Telnet对IP和端口进行通信,确定是否畅通;

参数修改常见问题

  • 如何修改云数据库 MySQL 的配置参数? 命令行方式

#修改会话变量

set 参数名称=变量值;

#修改全局变量

set global 参数名称=变量值;

  • 云数据库 MySQL 超时连接设置太短,如何增加时间?

成功登录MySQL实例后,修改 wait_timeout 参数。

  • 云数据库 MySQL 如何调整 group_concat_max_len 参数?

成功登录MySQL实例后,修改 group_concat_max_len 参数。

性能内存常见问题

  • MySQL 执行任务时,为什么会卡死?

是并发操作导致的锁等待,属于正常现象。


ErrorLog常见问题

  • 查看错误日志的位置

错误日志默认存放位置为数据目录下,可用以下命令查看:

mysql> show variables like '%log_error%';

+---------------+------------------------------------------------------+

| Variable_name | Value |

+---------------+------------------------------------------------------+

| log_error | /home/WDPM/MysqlData/mysql/DB-Server.localdomain.err |

+---------------+------------------------------------------------------+

1 row in set (0.00 sec)

  • 错误日志归档备份

错误日志如果不清理或删除,那么它会一直增长。在MySQL 5.5.7之前,可以通过mysqladmin –uroot –p flush-logs命令删除错误日志。MySQL 5.5.7以及之后,只能通过下面方式来归档、备份错误日志.

shell> mv host_name.err host_name.err-old


shell> mysqladmin -u root -p flush-logs


shell> mv host_name.err-old backup-directory

最近发表
标签列表