当前位置:Gxlcms > mysql > 突发事件防止数据库被打死紧急处理措施

突发事件防止数据库被打死紧急处理措施

时间:2021-07-01 10:21:17 帮助过:41人阅读

开发上线完以后,到早上高峰期并发压力大,有可能因某个SQL的原因把数据库给打死,参考《一个引号导致1个小时网站打不开》,这个时候你可以用pt-kill杀死,但连

开发上线完以后,到早上高峰期并发压力大,有可能因某个SQL的原因把数据库给打死,参考《一个引号导致1个小时网站打不开》,这个时候你可以用pt-kill杀死,但连接数过高,CPU负载很高,,这个工具根本没法去处理,数据库这个时候已经成瘫痪状态,那么应该怎么办?


首先要保证数据库不能被打死,先让数据库压力降下来,这里就要做一些限制措施。

我们先用iptables封死3306端口,先把压力降下来,然后tail -n 100 mysql.slow查看慢日志,找出那条耗时时间长的SQL,并通知开发。

#!/bin/bash #保证本机可以访问MySQL iptables -s localhost -A INPUT -p tcp --dport 3306 -j ACCEPT #保证监控机可以访问MySQL,以免造成HA切换。 iptables -s 监控机IP地址 -A INPUT -p tcp --dport 3306 -j ACCEPT #封杀应用连接数的所有IP地址 iptables -A INPUT -p tcp --dport 3306 -j DROP


然后下一步,我们要修改参数限制数据库连接数的并发以及InnoDB并发处理请求。

set global max_connections = 210; set global max_user_connections = 200; set global innodb_thread_concurrency = 8;


然后再iptables -F打开3306端口,观察数据库运行状态和CPU情况,如果压力仍然大,再适当的降低连接数,最终等待开发回滚代码,保证数据库不宕机。



本文出自 “贺春旸的技术专栏” 博客,请务必保留此出处

人气教程排行