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

网友投稿 318 2022-09-03

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请求的时间

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:JVM: 设置代码执行模式(解释模式、编译模式、混合模式)
下一篇:英国短跑选手B瓶尿样阳性,英国队或将被取消奥运男子接力银牌!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~