mysql夯住 原因,那些年我们遇到的数据库问题

数据库是我们每天都会打交道的基础设施,​围绕数据库或数据库服务器的问题每天都在发生,我们梳理下那些年我们遇到的数据库问题。

​问:[机器宕机]  all(#2) icmp.ping.alive from=gh == 0

​答:切除流量,重新扩容了一台,并加回服务器,做好预热

​问:Can't connect to MySQL server onhost ,机器故障3次以上无法连接!已经读节点下线。

答:从库宕机,流量已自动摘,剩余从库是否能够支撑,需要评估,从库配置一般需要按照两倍评估,一般没有问题

​问:实例异常  all(#2) mysql_alive_local

​答:机器异常自动下线,一般是因为机器过老,可以陆续下掉老机器。宕机原因可能是磁盘损坏导致

​问:[机器宕机]  all(#2) icmp.ping.alive from=yf == 0

​答:从库扩容,或主库宕机,自动主从切换导致,会自动补从库,业务上需要观察是否恢复

问:runtime=work  all(#3) Seconds_Behind_Master

​答:1. 可能业务上写QPS比较大,比如业务陡增或压测流量,业务上做好限流

2. 可以观察下db的qps是否有增长,或者行级别的写入有没有上涨

3. 也有可能在进行ddl操作,导致从库有延迟

4. 表空洞清理也会导致这个问题

5. 改表操作,也会有这个问题

6. 更新数据量太大了,导致主从延迟

​问:runtime=work  all(#3) load.1minPerCPU  >= 1.5

答:1.可能某个sql有问题,比如做的聚合运算太多了,造成cpu过高,可以先把sql语句kill掉2.业务上需要避免过大的定时任务对db造成较大的读写压力,可以增加限制,同时优化sql

3.关键时刻db做好sql限流

4. limit的值太大了也会有这个问题

5. 慢查询导致,比如大量update夯住了,无索引update

问:慢查询1分钟>1800  all(#6) Slow_queries

答:慢sql导致。

1.sql优化,加索引

问:连接使用率  all(#1) Conn_used_ratio

答:1.大量流量导致连接减少,比如压测流量

2. 或者连接这个db的应用服务器数量增加了,导致连接增多

问:并发线程数  all(#3) Threads_running  >= 256

答:1.磁盘满了

2. 大量慢查询,扫描行数过多,先把sql限流,或直接kill掉sql语句,业务上需要快速定位下sql来源,然后改下业务逻辑

3. 如果sql中in值超过200个,会退化成范围查询,会导致索引失效,所以大家要注意在写sql,有in条件时,控制不要到200个

4. 压测也会导致这个问题

5. sql无索引,慢查询导致

6. sql inlist 数量过多,且多为查询冷数据,buffer命中不高,产生慢查

问:网卡出流量使用率  all(#3) net.if.out.percent iface=eth0 >= 80

答:可能网卡配置低了,比如正常是万兆,结果配置成了千兆网卡机器

问:MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction

答:锁等待超时,比如删除数据没用到索引,导致全表扫描,需要改成适合索引的删除,或对sql语句增加索引

问:网卡发生降速  bdiff(#2) net.if.raw_speed iface=bond0 < 0

答:网卡故障

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值