Mysql - is marked as crashed and should be repaired

概述

上周发生了一个Mysql报错的问题,今天有时间整理一下产生的原因和来龙去脉,Mysql的版本是5.5,发生错误的表存储引擎都是MyISAM,产生的报错信息是Table 'xxxxxx' is marked as crashed and should be repaired

定位问题

产生的后果是Nginx服务没有响应,找到Mysql的进程,想做的是查找到mysql的错误日志路径,查看错误信息,错误信息里的关键词是定位问题、解决错误的有效手段。

在多说一句Linux服务器中的进程管理,使用 ps aux里面主要留意的信息是PID、进程所属用户和后面启动进程所执行的Bash命令。

ini 复制代码
ps aux | grep mysql

mysql    17743  4.7 33.1 3722028 2604540 ?     Sl   3月01 338:55 
/usr/local/mysql/libexec/mysqld 
--defaults-file=/usr/local/mysql/etc/my.cnf 
--basedir=/usr/local/mysql 
--datadir=/usr/local/mysql/data 
--plugin-dir=/usr/local/mysql/lib/mysql/plugin 
--user=mysql 
--log-error=/usr/local/mysql/var/mysql_error.log 
--open-files-limit=10240 
--pid-file=/usr/local/mysql/var/mysql.pid 
--socket=/tmp/mysql.sock 
--port=3306
  • 配置文件路径: --defaults-file /usr/local/mysql/etc/my.cnf
  • Mysql文件路径: --basedir /usr/local/mysql
  • Mysql数据报错路径: --datadir /usr/local/mysql/data
  • Mysql错误日志 --log-error /usr/local/mysql/var/mysql_error.log

使用 tail -f -n 20 /usr/local/mysql/var/mysql_error.log 观测错误信息,如果想让log的行数展示的多些,可以指定最后行数,例如想展示20行,tail -f -n 20 /usr/local/mysql/var/mysql_error.log,报错消息如下图:

成因

网上查了一下,错误的产生原因,有网友说是频繁查询和更新表造成的索引错误,还有说法是Mysql数据库因某种原因而受到了损坏,如:数据库服务器突发性断电,在数据表提供服务时对表的源文件进行某种操作都有可能导致,Mysql数据表被损坏而无法读取数据,总之就是因为某些不可测的问题造成表的损坏。

我个人估计是没有正确编写和使用代码导致的,出现问题的表都是MyISAM存储引擎。

解决办法

命令行方式

1、登录,切换到error的数据库上:

css 复制代码
mysql -u root -p

use cc;

2、检查出现问题的表的状态

sql 复制代码
check table cc_user_area;

3、修复表(table_name 需要修复的表名)

css 复制代码
repair table table_name

4.检查一下状态,如下图

sql 复制代码
check table cc_user_address;

还有一种更为便捷的方法,使用Navicat来处理,首先连接上数据库,选择表,右键->Maintain(维护)->Repair Tables(修复表)->Extended(扩展)

修复就完成了,服务也正常使用了,有时候需要规范的编码,才不会出现奇奇怪怪的问题。

相关推荐
面汤放盐6 分钟前
互联网“黑话”生存实用指南(100)
java·后端
爱吃烤鸡翅的酸菜鱼1 小时前
【Redis】常用数据结构之List篇:从常用命令到典型使用场景
数据结构·redis·后端·缓存·list
ytadpole2 小时前
揭秘 XXL-JOB 调度:从代码深处看路由策略的精妙设计
java·后端
京东零售技术2 小时前
查收你的技术成长礼包
后端·算法·架构
gengsa2 小时前
使用 Telepresence 做本地微服务项目开发
后端·微服务
我想试一下名字可以取多长一点点再长一些2 小时前
开源一个超好用的数据核对/对账框架
后端
Undoom2 小时前
腾讯云 Lighthouse MCP 的实战全解
后端
武子康3 小时前
Java-122 深入浅出 MySQL CAP理论详解与分布式事务实践:从2PC到3PC与XA模式
java·大数据·数据库·分布式·mysql·性能优化·系统架构
0wioiw03 小时前
Nodejs(④GraphQL)
后端·graphql
王同学 学出来3 小时前
跟做springboot尚品甄选项目(二)
java·spring boot·后端