1818IP-服务器技术教程,云服务器评测推荐,服务器系统排错处理,环境搭建,攻击防护等

当前位置:首页 - 运维 - 正文

君子好学,自强不息!

今天主要介绍一次因磁盘空间满导致的事故及解决方法。

磁盘空间满

1. 查看死锁

最近业务反馈无法登陆系统,需要我这边配合检查下,这里之所以先看死锁是因为这系统一般出问题都是这原因..

select*frominformation_schema.INNODB_LOCKS;showprocesslist;

记一次生产数据库因磁盘空间满而引起的死锁故障及解决过程

2. 查看阻塞锁

看一下这里面是被什么语句所阻塞了

--查看哪个线程被哪个堵塞,waiting_thread_id代表等待线程,blocking_thread_id代表堵塞线程SELECTr.trx_idwaiting_trx_id,r.trx_mysql_thread_idwaiting_thread_id,r.trx_querywaiting_query,b.trx_idblocking_trx_id,b.trx_mysql_thread_idblocking_thread_id,b.trx_queryblocking_query,now()-r.TRX_STARTEDblocking_timeFROMinformation_schema.innodb_lock_waitswINNERJOINinformation_schema.innodb_trxbONb.trx_id=w.blocking_trx_idINNERJOINinformation_schema.innodb_trxrONr.trx_id=w.requesting_trx_id;--查看源头sqlSELECTa.sql_text,c.id,d.trx_started,b.processlist_user,b.processlist_hostFROMPERFORMANCE_SCHEMA.events_statements_currentaJOINPERFORMANCE_SCHEMA.threadsbONa.thread_id=b.thread_idJOINinformation_schema.PROCESSLISTcONb.processlist_id=c.idJOINinformation_schema.innodb_trxdONc.id=d.trx_mysql_thread_idWHEREc.id=73921ORDERBYd.trx_started;

记一次生产数据库因磁盘空间满而引起的死锁故障及解决过程

3. 查看死锁日志

因为我配置文件是加了参数:

#打印deadlock日志innodb_print_all_deadlocks=1

所以这里直接看mysqld.log情况

记一次生产数据库因磁盘空间满而引起的死锁故障及解决过程

可以发现日志提示磁盘满了…

4. 检查磁盘空间

检查后发现果然是满了,事后发现是备份策略每天备份一次,14天清理,但数据越来越大导致空间不够用了,清理后调整备份策略即可。

记一次生产数据库因磁盘空间满而引起的死锁故障及解决过程

5. 解决方案

(1)调整备份策略

修改为每两天一次全备,14天自动清理

(2)清理数据库

清理数据库无用表及无用对象

(3)数据库日志表清理

建立归档库,定期挪走相关日志表,隔7天后drop掉

(4)建立监控告警体系

zabbix覆盖监控,钉钉预警。

本文来源:1818IP

本文地址:https://www.1818ip.com/post/9559.html

免责声明:本文由用户上传,如有侵权请联系删除!

发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。