记一次mysql的binlog踩的坑Caused by: java.sql.SQLException: Table ‘.X‘ is marked as crashed and should be .

今天同事们突然说系统挂了,访问不了了。我赶紧看了下系统日志,提示报错Caused by: java.sql.SQLException: Table './haoma517/@6d59@6c5f_@676d@5dde@5e02_2' is marked as crashed and should be repaired,我一看数据库的问题,就重启了一下数据库服务,结果还是不行,然后看了下系统磁盘,发现磁盘竟然满了。我以为是照片存储过多,然后赶紧去备份照片到本地,删除系统里面的照片,发现照片根本就没那么大。后来检查了下文件目录大小,才发现问题,原来是我做主从备份时候,没有配置及时删除生成的二进制日志文件导致的,binlog文件太多而没有及时删除导致磁盘满了,这个确实是我大意了。现在讲一下解决问题的方法。

1.Caused by: java.sql.SQLException: Table './haoma517/@6d59@6c5f_@676d@5dde@5e02_2' is marked as crashed and should be repaired这个问题实际是磁盘不足导致的,这时候只需要将出现这种问题的表修复一下就可以了,可以试用navicat打开数据库进行表格修复。操作方法如下:

在修复表格之前,可以先双击看是否能打开,如果打不开就需要修复一下。

2.删除无用的binlog文件,操作方法如下:

2.1 连接上mysql数据库执行命令:

 show binary logs;

查看二进制日志的文件列表,如下图

2.2 执行命令

 purge binary logs to 'master-bin.XXX'; 

删除二进制日志,该命令会将XXX前面的日志文件全部删除,例如:

purge binary logs to 'master-bin.000015'; 

上面的命令会将master-bin.000001 ~ master-bin.000014的日志文件全部删除,保留master-bin.000015文件。操作完可以再次执行show binary logs;命令查看结果如下:

可以看到master-bin.000001 ~ master-bin.000014的日志文件确实被删除掉了。

3. 为了防止以后再出现类似问题,应该配置自动删除过期不用的二进制日志文件,方法如下:

修改mysql的配置文件/etc/my.cnf,添加自动删除二进制日志文件的配置expire_logs_days = 5

配置binlog文件只保留指定天数内的,过期自动删除,这样就可以避免掉二进制日志一直增加导致磁盘不够用的情况了,这次确实是我自己大意了,该打!!!

4.附带添加centos查看文件大小的命令如下:

du -h --max-depth=1 ${pwd} 可以查看当前目录下文件的大小,例子如下:

这个可以便于我们查看到底是哪个目录文件过大

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码代码的石头妈妈

读了之后对你有用才是最重要的

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值