• events_statements_summary_by_digest 未正常记录分类sql


    1.服务器版本

    cat /etc/redhat-release 
    CentOS Linux release 7.4.1708 (Core)

    2.数据库版本

    mysql> select version();
    +------------+
    | version()  |
    +------------+
    | 5.7.36-log |
    +------------+
    1 row in set (0.00 sec)

    3.问题现象

    一主两从三个实例,假设A为主,B,C为A的从库。在B实例上通过如下语句能够查到当天有对test表的增加字段操作,但是在A,C实例上通过同样的语句确查不到同样的加字段语句。

    select DIGEST_TEXT,COUNT_STAR,FIRST_SEEN,LAST_SEEN from performance_schema.events_statements_summary_by_digest where lower(DIGEST_TEXT) like 'alter%test%';

    4.问题原因

    出现这种情况有两种可能

    1) 没有开启 statements_digest 功能

    1. mysql> select * from setup_consumers where NAME='statements_digest';
    2. +-------------------+---------+
    3. | NAME | ENABLED |
    4. +-------------------+---------+
    5. | statements_digest | YES |
    6. +-------------------+---------+
    7. #ENABLED 为 YES 表示开启了该功能

    2)performance_schema.events_statements_summary_by_digest 表已达到最大保存条数限制

    1. 下面是从库C上查询的结果(A实例一样的原因)
    2. mysql> show variables like 'performance_schema_digests_size';
    3. +---------------------------------+-------+
    4. | Variable_name | Value |
    5. +---------------------------------+-------+
    6. | performance_schema_digests_size | 10000 |
    7. +---------------------------------+-------+
    8. 1 row in set (0.00 sec)
    9. #该参数控制 performance_schema.events_statements_summary_by_digest 保存的最大记录数,超过该最大值,不会再保存新的sql语句分类
    10. mysql> select count(*) from performance_schema.events_statements_summary_by_digest;
    11. +----------+
    12. | count(*) |
    13. +----------+
    14. | 10000 |
    15. +----------+
    16. 1 row in set (0.02 sec)
    17. #该表已经达到指定的最大保存值
    18. mysql> show global status like 'Performance_schema_digest_lost';
    19. +--------------------------------+-----------+
    20. | Variable_name | Value |
    21. +--------------------------------+-----------+
    22. | Performance_schema_digest_lost | 170099501 |
    23. +--------------------------------+-----------+
    24. 1 row in set (0.01 sec)
    25. #该变量表示events_statements_summary_by_digest多少语句没有保存

    #本人遇到的问题就是 events_statements_summary_by_digest 已经存满了,导致新的sql分类被丢弃(按理说10000 已经是个挺大的数字了,基本够用,只能说当前环境的业务不同的sql类型太多了)

    5.问题处理

    找到原因,那处理起来就简单了。在主库truncate events_statements_summary_by_digest,重新记录

  • 相关阅读:
    基于STM32设计的智能化钻杆系统(华为云IOT)
    linux线程池
    vscode自动升级后无法打开远程解决方案
    谐云携手EMQ ,打造车联网平台联合解决方案
    LeetCode-895. 最大频率栈以及HashMap的存值取值操作
    springboot增加license授权认证
    Kubernetes资源编排系列之三: Kustomize篇
    xshell 判断文件超出指定大小则清空文件
    国际结算重点知识整理
    常用的国内镜像源
  • 原文地址:https://blog.csdn.net/shaochenshuo/article/details/127749531