c语言sscanf函数的用法是什么
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~