ITPub博客

首页 > 数据库 > MySQL > MySQL 一个select把实例搞崩了,原来是表数据异常

MySQL 一个select把实例搞崩了,原来是表数据异常

原创 MySQL 作者:张冲andy 时间:2024-03-22 16:22:30 0 删除 编辑

问题背景

几天前,该环境ibdata1的size被置为0,无法启动,使用传输表空间等特殊恢复手段,恢复数据到新实例。

再次收到通知,MySQL无法访问了,来看看。

错误日志如下

起初,以为是一条关联select触发了mysql bug导致实例崩溃。

相关表的表结构,如下所示。

既然之前该实例是经过特殊恢复重建的,能不能把数据导出再导入呢?

发现导出时 interface_mng 表访问存在异常。

select count(*)是没有问题的。访问部分数据也是可以的。全表扫描有问题,那么就是部分数据有异常。

多次不同的尝试过后,mysql 错误日志发现新的 row0mysql.cc line 263 重要信息。

查看row0mysql.cc line 263的源码

简单的理解: 从innodb层传递到server层时,一个BLOB类型的大对象断言出错har的影响。

那么怀疑矛头指向字段类型为 text 大对象了。

定位异常为 text类型的RESP_DATA 字段。

单独排除 RESP_DATA 这一列,包含剩下的所有列,访问无问题。

访问包含 RESP_DATA 列有问题。

最终规避方案:排除异常 RESP_DATA 字段 重建表


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31383567/viewspace-3009866/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
支持就关注我个人公众号:DBA烂笔头 。专注数据库领域,熟悉oracle、mysql、redis、mongodb,clickhouse等相关技术

注册时间:2016-08-11

  • 博文量
    626
  • 访问量
    286296