Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > MySQL故障处理

MySQL数据库故障处理全流程总结

作者:老鹰抓小鸽

这篇文章主要介绍了MySQL数据库故障处理的相关资料,文中通过代码详细分析了.cnf配置、ibtmp文件膨胀及binlog文件管理不当导致MySQL服务卡死、无法连接等问题,需要的朋友可以参考下

前言

生产环境执行 UPDATE 语句提示锁冲突(无实际锁进程),通过df -h排查发现服务器磁盘空间耗尽,导致MySQL 服务卡死、无法连接。之后执行rm -rf批量删除服务器中的备份数据及所有 binlog 文件(mysql-bin.000*)释放空间,同时发现ibtmp1文件膨胀至 993G,用vim my.cnf添加ibtmp1大小限制配置。通过./mysql.server start重启服务失败,提示有/var/lock/subsys/mysql锁文件,之后执行rm -f删除锁文件,但是启动失败。通过查看错误日志定位到 binlog 索引与文件不一致,用vim mysql-bin.index清空索引文件,配合chown修复权限后重启 MySQL 服务成功。

二、故障处理核心命令(源自实际执行日志)

1. 故障排查类

命令用途具体命令
切换目录定位文件cd /data/cd bigdata/mysql/cd /data/mysql-5.7.37/data/等系列cd命令
查看目录 / 文件列表llll -h
排查磁盘空间df -h(多次执行,确认磁盘占用及释放情况)
查看文件 / 目录大小dudu -shdu -h --max-depth=1、du -ah | sort -hr、du -sh -d 1
查看 MySQL 进程状态ps -ef | grep mysqlps -ef | grep mysql.server
查看服务运行状态./mysql.server statussystemctl status mysqlsystemctl status mysqld
查看端口占用netstat -tlnp | grep :3306
检索历史操作history、history | grep statushistory | grep mysql

2. 故障处理类

命令用途具体命令
释放磁盘空间(不规范)rm -rf mysql-bin.000*(批量删除 binlog 文件)
修改 MySQL 配置文件vim my.cnf(添加innodb_temp_data_file_path = ibtmp1:12M:autoextend:max:10G
管理 MySQL 服务./mysql.server start./mysql.server stop
删除服务锁文件rm -f /var/lock/subsys/mysql
修复文件 / 目录权限chown -R mysql:mysql /data/mysql-5.7.37/datachown -R mysql:mysql /data/mysql-5.7.37
编辑 binlog 索引文件vim mysql-bin.index(清空无效记录)

3. 辅助操作类

命令用途具体命令
查看命令帮助du --help
切换根目录cd //cd /var/lock/subsys/

三、核心问题原因分析

1. 初始 “锁提示” 的本质

并非真实数据库锁冲突,而是磁盘空间被ibtmp1(993G)和未清理的 binlog 文件完全耗尽,导致 MySQL 服务进程异常,触发虚假锁提示,这也是ps -ef|grep mysql未发现锁进程的原因。

2. 磁盘空间耗尽的核心诱因

3. MySQL 重启失败的双重原因

4. 权限相关辅助问题

部分文件 / 目录权限非mysql用户所有,导致服务启动时无法正常读写数据,需通过chown -R修复权限。

四、本次操作的潜在风险

1. 批量删除 binlog 文件的严重风险

2. 盲目删除锁文件的风险

3. 批量修改权限的风险

4. 配置修改未验证的风险

五、预防措施(避免问题再次发生)

1. 规范 binlog 管理(核心避坑)

2. 限制临时表空间膨胀

3. 完善磁盘与服务监控

4. 规范故障处理流程

5. 定期巡检与备份

六、关键总结

  1. 本次故障的核心是 “不规范操作 + 无配置兜底”:批量删除 binlog 破坏索引一致性、未限制ibtmp1大小导致磁盘耗尽,是引发连锁问题的根源;
  2. 实际执行的du系列命令、df -h等排查命令有效,但删除操作(rm -rf mysql-bin.000*)存在严重风险,需替换为官方规范命令;
  3. 预防的核心是 “提前配置 + 规范操作”:通过配置自动清理、资源限制规则减少故障诱因,通过规范命令操作避免二次故障,结合监控与备份形成完整防护体系。

到此这篇关于MySQL数据库故障处理的文章就介绍到这了,更多相关MySQL故障处理内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文