网站首页 > linux / 正文
概述
今天主要介绍一次因磁盘空间满导致的事故及解决方法。
1、查看死锁
最近业务反馈无法登陆系统,需要我这边配合检查下,这里之所以先看死锁是因为这系统一般出问题都是这原因..
select * from information_schema.INNODB_LOCKS;
show processlist;
2、查看阻塞锁
看一下这里面是被什么语句所阻塞了
--查看哪个线程被哪个堵塞,waiting_thread_id代表等待线程,blocking_thread_id代表堵塞线程
SELECT
r.trx_id waiting_trx_id,
r.trx_mysql_thread_id waiting_thread_id,
r.trx_query waiting_query,
b.trx_id blocking_trx_id,
b.trx_mysql_thread_id blocking_thread_id,
b.trx_query blocking_query,
now( ) - r.TRX_STARTED blocking_time
FROM
information_schema.innodb_lock_waits w
INNER JOIN information_schema.innodb_trx b ON b.trx_id = w.blocking_trx_id
INNER JOIN information_schema.innodb_trx r ON r.trx_id = w.requesting_trx_id;
--查看源头sql
SELECT
a.sql_text,
c.id,
d.trx_started,
b.processlist_user,
b.processlist_host
FROM
PERFORMANCE_SCHEMA.events_statements_current a
JOIN PERFORMANCE_SCHEMA.threads b ON a.thread_id = b.thread_id
JOIN information_schema.PROCESSLIST c ON b.processlist_id = c.id
JOIN information_schema.innodb_trx d ON c.id = d.trx_mysql_thread_id
WHERE
c.id = 73921
ORDER BY
d.trx_started;
3、查看死锁日志
因为我配置文件是加了参数:
#打印deadlock日志
innodb_print_all_deadlocks=1
所以这里直接看mysqld.log情况
可以发现日志提示磁盘满了...
4、检查磁盘空间
检查后发现果然是满了,事后发现是备份策略每天备份一次,14天清理,但数据越来越大导致空间不够用了,清理后调整备份策略即可。
5、解决方案
1)调整备份策略
修改为每两天一次全备,14天自动清理
2)清理数据库
清理数据库无用表及无用对象
3)数据库日志表清理
建立归档库,定期挪走相关日志表,隔7天后drop掉
4)建立监控告警体系
zabbix覆盖监控,钉钉预警。
觉得有用的朋友多帮忙转发哦!后面会分享更多devops和DBA方面的内容,感兴趣的朋友可以关注下~
Tags:linux磁盘满了
- 上一篇:linux中磁盘满了?一招教你快速清理
- 下一篇:Linux服务器磁盘满了如何清理
猜你喜欢
- 2024-11-26 VMware虚拟机中Linux系统磁盘空间扩容实战
- 2024-11-26 linux 排查磁盘问题的常用命令
- 2024-11-26 Linux 磁盘扩容(非LVM)方式
- 2024-11-26 Linux系统磁盘分区管理LVM概念及扩容操作
- 2024-11-26 linux系统磁盘空间使用情况
- 2024-11-26 k8s自动化运维十二-磁盘管理
- 2024-11-26 linux磁盘空间查看命令(du,df)剩余空间查看详解
- 2024-11-26 linux中crontab定时任务导致磁盘满和云监控未报警的的坑
- 2024-11-26 centos7 提示根目录系统文件已满,如何解决?
- 2024-11-26 Linux 查找占用磁盘IO读写很高的进程方法