报错日志打印:
Caused by: com.mysql.cj.jdbc.exceptions.MySQLTransactionRollbackException: Lock wait timeout exceeded; try restarting transaction
发现数据库一直重复请求事务
问题分析mysql:
首先登录下数据库服务器看下,分别看下数据库的磁盘和内存情况
发现内存无异常,磁盘占用发现异常,如下:
文件使用情况命令:df -h
home目录下占用满了,那么进入home文件夹,
查看具体文件从大到小排序命令:ls -lhS --sort=size
一层一层发现是mysql的日志满了,导致写数据sql日志写不进去了
mysql日志解决问题:
临时处理方案1:但是后续还会再生成sql
清空文件日志命令: > genertal.log (>为清理命令,不用重启mysql)
永久处理方案2:需要重启mysql
设置关闭sql日志:SET global general_log = 'OFF';
日志分段方案3:
通过日志工具只保留一周的日志
题外话:sql 慢查询日志:排查上线后哪些sql是执行比较慢的,根据这些sql进行优化
问题分析业务系统日志:
同上述方法,根据df -h 以及 ls -lhS --sort=size排序命令,找到是系统日志文件爆满,
系统日志解决方案:
将系统日志用日志工具保留一周的日志,要注意的是,当生产环境中日志的级别一定要调高