• Mysql 45讲学习笔记(二十九)判断数据库是否可用


    怎么判断主库出问题了?

    一.select 1 判断

    • select1成功返回,只能说明这个库的进程还在,并不能说明主库没问题

    innodb_thread_concurrency参数

        控制InnoDB并发线程上线,一旦并发线程数达到这个值,新请求就会进入等待状态,直到线程退出

    产生问题:

      我们用select 1检测实例是否正常,但是其他查询表的语句依然可能会被阻塞,因而判定是正常的

    并发连接和并发查询

    •   在 show processlist结果里,看到的几千个连接,指的是并发连接
    •   当前正在执行的就是并发查询

    二.查表判断

     解决方法:

         在系统库(mysql库里)创建一个表,比如heath_check,里面只放一行数据,然后定期执行

    select * from mysql.health_check;

    优点:

        检测出并发线程过多导致数据库不可用

    缺点:

    • 硬件空间满了,
    • 更新事务要写binlog,一旦binlog所在磁盘空间占用率达到100%,那么所有更新语句和事务提交的commit语句都会被堵住,系统可以读但是不可以写

    三.更新判断

        放一个timestamp字段,来表示最后一次执行检测的时间

    update mysql.health_check set t_modified=now();

    更新语句,如果失败或者超时,就可以发起主备切换了,为什么还会有判定慢的问题呢?

    解决问题:

        服务器IO资源分配问题

    •  一个日志盘的IO利用率已经是100%场景。这时候整个系统响应非常慢,需要做主备切换
    • 每个请求都有机会获得IO资源,执行自己的任务,而我们检测使用的update命令,需要的资源很少,所以执行几率比较高

    update命令没有超时,就得到"系统正常"结论

    四.内部统计

    • MySQL5.6版本以后提供了performance_shcema库,就在file_dummary_by_event_name表里统计了每次IO请求的时间

        

  • 相关阅读:
    JMeter 扩展开发:扩展 TCP 取样器
    DMSANet: Dual Multi Scale Attention Network
    代码随想录算法训练营第五十七天 | 392.判断子序列、115.不同的子序列
    虎扑论坛数据分析
    卷积神经网络(CNN)【第三章】
    VMWare Ubuntu压缩虚拟磁盘
    uniapp微信小程序_自定义交费逻辑编写
    微信小程序是否可以使用自建SSL证书?
    Django和Mysql数据库
    Flowable主要子流程介绍
  • 原文地址:https://blog.csdn.net/weixin_42369687/article/details/126143698