问题描述
前端请求超时,后端程序并没有任何报错,程序中的改查相关操作完全没有问题,插入操作执行后就没有反应了。
解决步骤
- 查看mysql所在服务器硬盘空间
df -hT
发现磁盘空间使用率高达100%(这个时候不要想着删除表数据,因为mysql数据删除后并不会马上释放掉相关的磁盘空间,而且删除操作会产生新的bin log日志,非但不能释放出磁盘空间还会对mysql中被删除的表加锁并长期持有,个别情况下甚至会出现死锁的情况。)
- 查看mysql是否开启bin log日志并确定其是否可以删除
#查看数据库是否开启bin log
SHOW VARIABLES LIKE 'log_bin';
#查看日志文件
show binary logs;
#查看正在使用的日志文件
show master status;
#删除除当前使用日志外的所有日志
purge binary logs to 'mysql-bin.000005';
#删除指定日志之前的日志
PURGE MASTER LOGS TO’mysql-bin.010’;
#删除指定日期之前的日志
PURGE MASTER LOGS BEFORE’2020-3-12 13:00:00’;
#删除N天前的日志
PURGE MASTER LOGS BEFOREDATE_SUB( NOW( ), INTERVAL N DAY);
#如下面的语句可以清除 7 天前的binlog,
PURGE MASTER LOGS BEFOREDATE_SUB( NOW( ), INTERVAL 7 DAY);
- 删除mysql日志后会释放大量磁盘空间。这时可以重启mysql,直接一键解决死锁啊、缓存啊等问题。
- 可以按需求设置日志自动删除
#其中 expire_logs_days 日志删除时间 为0表示日志不删除
SHOW VARIABLES LIKE '%log%';
# 设置日志删除删除时间为10天,SQL执行老规矩,重启失效。需要永久生效就修改mysql配置文件--my.cnf
set global expire_logs_days = 10;