简介 汇总遇到过的异常宕机汇总
说明
1 本人也不懂代码,无法找到原因,所以只记录浅显的解决办法
2 异常宕机 分为能自行启动和 必须通过调整隔离级别才能启动两种情况.本文应对的是第一种情况
案例汇总
案例1
核心报错区域
Semaphore wait has lasted > 600 seconds. We intentionally crash the server because it appears to be hung
分析
1 MySQL后台线程srv_error_monitor_thread发现存在阻塞超过600s的latch锁时,如果连续10次检测该锁仍没有释放,就会触发panic避免服务持续hang下去。等待的数据字典锁
2 AHI 的全局锁btr_search_latch 经常会是竞争热点影响性能,5.7版本后有所改善与InnoDB buffer 一样做了多实例拆分
解决方式
1 可以选择暂时关闭AHI然后进行持续观察 set global innodb_adaptive_hash_index=0;
案例2
核心报错区域
Trying to get some variables.
Some pointers may be invalid and cause the dump to abort.
Query (7fefc00bf590): select语句
Connection ID (thread ID): 508
Status: NOT_KILLED
分析
1 一旦执行指定的select记录语句就会导致mysql重启(包括程序与手动执行)
2 其他表的查询没有问题,可能是此表的问题
3 执行非特定select语句的其他select没有任何问题
4 在从库进行此表的此语句查询也没有任何问题
总结 就是特定表的特定查询语句导致mysql宕机
解决方式
1 此问题联系开发进行解决改造特定的查询sql进行暂时解决,不会影响该数据库的其他业务.至于造成的具体原因,只能根据pstack gdb进行跟踪分析了